javax.xml.ws.spi

## Class Provider

- java.lang.Object
- - javax.xml.ws.spi.Provider

-     public abstract class Provider
      extends Object

  Service provider for `ServiceDelegate` and `Endpoint` objects.

  Since:
    JAX-WS 2.0

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `JAXWSPROVIDER_PROPERTY` A constant representing the property used to lookup the name of a `Provider` implementation class.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `Provider()` Creates a new instance of Provider

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract Endpoint` | `createAndPublishEndpoint(String address, Object implementor)` Creates and publishes an endpoint object with the specified address and implementation object.
    `Endpoint` | `createAndPublishEndpoint(String address, Object implementor, WebServiceFeature... features)` Creates and publishes an endpoint object with the specified address, implementation object and web service features.
    `Endpoint` | `createEndpoint(String bindingId, Class<?> implementorClass, Invoker invoker, WebServiceFeature... features)` Creates an endpoint object with the provided binding, implementation class, invoker and web service features.
    `abstract Endpoint` | `createEndpoint(String bindingId, Object implementor)` Creates an endpoint object with the provided binding and implementation object.
    `Endpoint` | `createEndpoint(String bindingId, Object implementor, WebServiceFeature... features)` Creates an endpoint object with the provided binding, implementation object and web service features.
    `abstract ServiceDelegate` | `createServiceDelegate(URL wsdlDocumentLocation, QName serviceName, Class<? extends Service> serviceClass)` Creates a service delegate object.
    `ServiceDelegate` | `createServiceDelegate(URL wsdlDocumentLocation, QName serviceName, Class<? extends Service> serviceClass, WebServiceFeature... features)` Creates a service delegate object.
    `abstract W3CEndpointReference` | `createW3CEndpointReference(String address, QName serviceName, QName portName, List<Element> metadata, String wsdlDocumentLocation, List<Element> referenceParameters)` Factory method to create a `W3CEndpointReference`.
    `W3CEndpointReference` | `createW3CEndpointReference(String address, QName interfaceName, QName serviceName, QName portName, List<Element> metadata, String wsdlDocumentLocation, List<Element> referenceParameters, List<Element> elements, Map<QName,String> attributes)` Factory method to create a `W3CEndpointReference`.
    `abstract <T> T` | `getPort(EndpointReference endpointReference, Class<T> serviceEndpointInterface, WebServiceFeature... features)` The getPort method returns a proxy.
    `static Provider` | `provider()` Creates a new provider object.
    `abstract EndpointReference` | `readEndpointReference(Source eprInfoset)` read an EndpointReference from the infoset contained in `eprInfoset`.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### JAXWSPROVIDER_PROPERTY

          public static final String JAXWSPROVIDER_PROPERTY

      A constant representing the property used to lookup the name of a `Provider` implementation class.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Provider

          protected Provider()

      Creates a new instance of Provider

  - ### Method Detail

    - #### provider

          public static Provider provider()

      Creates a new provider object.

      The algorithm used to locate the provider subclass to use consists of the following steps:

      - If a resource with the name of `META-INF/services/javax.xml.ws.spi.Provider` exists, then its first line, if present, is used as the UTF-8 encoded name of the implementation class.
      - If the $java.home/lib/jaxws.properties file exists and it is readable by the `java.util.Properties.load(InputStream)` method and it contains an entry whose key is `javax.xml.ws.spi.Provider`, then the value of that entry is used as the name of the implementation class.
      - If a system property with the name `javax.xml.ws.spi.Provider` is defined, then its value is used as the name of the implementation class.
      - Finally, a default implementation class name is used.

    - #### createServiceDelegate

          public abstract ServiceDelegate createServiceDelegate(URL wsdlDocumentLocation,
                                              QName serviceName,
                                              Class<? extends Service> serviceClass)

      Creates a service delegate object.

      Parameters:
        `wsdlDocumentLocation` - A URL pointing to the WSDL document for the service, or `null` if there isn't one.
        `serviceName` - The qualified name of the service.
        `serviceClass` - The service class, which MUST be either `javax.xml.ws.Service` or a subclass thereof.
      Returns:
        The newly created service delegate.

    - #### createServiceDelegate

          public ServiceDelegate createServiceDelegate(URL wsdlDocumentLocation,
                                              QName serviceName,
                                              Class<? extends Service> serviceClass,
                                              WebServiceFeature... features)

      Creates a service delegate object.

      Parameters:
        `wsdlDocumentLocation` - A URL pointing to the WSDL document for the service, or `null` if there isn't one.
        `serviceName` - The qualified name of the service.
        `serviceClass` - The service class, which MUST be either `javax.xml.ws.Service` or a subclass thereof.
        `features` - Web Service features that must be configured on the service. If the provider doesn't understand a feature, it must throw a WebServiceException.
      Returns:
        The newly created service delegate.
      Since:
        JAX-WS 2.2

    - #### createEndpoint

          public abstract Endpoint createEndpoint(String bindingId,
                                Object implementor)

      Creates an endpoint object with the provided binding and implementation object.
      Parameters:
        `bindingId` - A URI specifying the desired binding (e.g. SOAP/HTTP)
        `implementor` - A service implementation object to which incoming requests will be dispatched. The corresponding class MUST be annotated with all the necessary Web service annotations.
      Returns:
        The newly created endpoint.

    - #### createAndPublishEndpoint

          public abstract Endpoint createAndPublishEndpoint(String address,
                                          Object implementor)

      Creates and publishes an endpoint object with the specified address and implementation object.
      Parameters:
        `address` - A URI specifying the address and transport/protocol to use. A http: URI MUST result in the SOAP 1.1/HTTP binding being used. Implementations may support other URI schemes.
        `implementor` - A service implementation object to which incoming requests will be dispatched. The corresponding class MUST be annotated with all the necessary Web service annotations.
      Returns:
        The newly created endpoint.

    - #### readEndpointReference

          public abstract EndpointReference readEndpointReference(Source eprInfoset)

      read an EndpointReference from the infoset contained in `eprInfoset`.
      Parameters:
        `eprInfoset` - infoset for EndpointReference
      Returns:
        the `EndpointReference` unmarshalled from `eprInfoset`. This method never returns `null`.
      Throws:
        `WebServiceException` - If there is an error creating the `EndpointReference` from the specified `eprInfoset`.
        `NullPointerException` - If the `null` `eprInfoset` value is given.
      Since:
        JAX-WS 2.1

    - #### getPort

          public abstract <T> T getPort(EndpointReference endpointReference,
                      Class<T> serviceEndpointInterface,
                      WebServiceFeature... features)

      The getPort method returns a proxy. If there are any reference parameters in the `endpointReference`, then those reference parameters MUST appear as SOAP headers, indicating them to be reference parameters, on all messages sent to the endpoint. The parameter `serviceEndpointInterface` specifies the service endpoint interface that is supported by the returned proxy. The parameter `endpointReference` specifies the endpoint that will be invoked by the returned proxy. In the implementation of this method, the JAX-WS runtime system takes the responsibility of selecting a protocol binding (and a port) and configuring the proxy accordingly from the WSDL metadata of the `serviceEndpointInterface` and the `EndpointReference`. For this method to successfully return a proxy, WSDL metadata MUST be available and the `endpointReference` MUST contain an implementation understood `serviceName` metadata.
      Parameters:
        `endpointReference` - the EndpointReference that will be invoked by the returned proxy.
        `serviceEndpointInterface` - Service endpoint interface
        `features` - A list of WebServiceFeatures to configure on the proxy. Supported features not in the `features` parameter will have their default values.
      Returns:
        Object Proxy instance that supports the specified service endpoint interface
      Throws:
        `WebServiceException` -
        - If there is an error during creation of the proxy
        - If there is any missing WSDL metadata as required by this method}
        - If this `endpointReference` is illegal
        - If an illegal `serviceEndpointInterface` is specified
        - If a feature is enabled that is not compatible with this port or is unsupported.
      Since:
        JAX-WS 2.1
      See Also:
        `WebServiceFeature`

    - #### createW3CEndpointReference

          public abstract W3CEndpointReference createW3CEndpointReference(String address,
                                                        QName serviceName,
                                                        QName portName,
                                                        List<Element> metadata,
                                                        String wsdlDocumentLocation,
                                                        List<Element> referenceParameters)

      Factory method to create a `W3CEndpointReference`.

      This method can be used to create a `W3CEndpointReference` for any endpoint by specifying the `address` property along with any other desired properties. This method can also be used to create a `W3CEndpointReference` for an endpoint that is published by the same Java EE application. To do so the `address` property can be provided or this method can automatically determine the `address` of an endpoint that is published by the same Java EE application and is identified by the `serviceName` and `portName` propeties. If the `address` is `null` and the `serviceName` and `portName` do not identify an endpoint published by the same Java EE application, a `javax.lang.IllegalStateException` MUST be thrown.

      Parameters:
        `address` - Specifies the address of the target endpoint
        `serviceName` - Qualified name of the service in the WSDL.
        `portName` - Qualified name of the endpoint in the WSDL.
        `metadata` - A list of elements that should be added to the `W3CEndpointReference` instances `wsa:metadata` element.
        `wsdlDocumentLocation` - URL for the WSDL document location for the service.
        `referenceParameters` - Reference parameters to be associated with the returned `EndpointReference` instance.
      Returns:
        the `W3CEndpointReference` created from `serviceName`, `portName`, `metadata`, `wsdlDocumentLocation` and `referenceParameters`. This method never returns `null`.
      Throws:
        `IllegalStateException` -
        - If the `address`, `serviceName` and `portName` are all `null`.
        - If the `serviceName` service is `null` and the `portName` is NOT `null`.
        - If the `address` property is `null` and the `serviceName` and `portName` do not specify a valid endpoint published by the same Java EE application.
        - If the `serviceName`is NOT `null` and is not present in the specified WSDL.
        - If the `portName` port is not `null` and it is not present in `serviceName` service in the WSDL.
        - If the `wsdlDocumentLocation` is NOT `null` and does not represent a valid WSDL.
        `WebServiceException` - If an error occurs while creating the `W3CEndpointReference`.
      Since:
        JAX-WS 2.1

    - #### createW3CEndpointReference

          public W3CEndpointReference createW3CEndpointReference(String address,
                                                        QName interfaceName,
                                                        QName serviceName,
                                                        QName portName,
                                                        List<Element> metadata,
                                                        String wsdlDocumentLocation,
                                                        List<Element> referenceParameters,
                                                        List<Element> elements,
                                                        Map<QName,String> attributes)

      Factory method to create a `W3CEndpointReference`. Using this method, a `W3CEndpointReference` instance can be created with extension elements, and attributes. `Provider` implementations must override the default implementation.

      This method can be used to create a `W3CEndpointReference` for any endpoint by specifying the `address` property along with any other desired properties. This method can also be used to create a `W3CEndpointReference` for an endpoint that is published by the same Java EE application. To do so the `address` property can be provided or this method can automatically determine the `address` of an endpoint that is published by the same Java EE application and is identified by the `serviceName` and `portName` propeties. If the `address` is `null` and the `serviceName` and `portName` do not identify an endpoint published by the same Java EE application, a `javax.lang.IllegalStateException` MUST be thrown.

      Parameters:
        `address` - Specifies the address of the target endpoint
        `interfaceName` - the `wsam:InterfaceName` element in the `wsa:Metadata` element.
        `serviceName` - Qualified name of the service in the WSDL.
        `portName` - Qualified name of the endpoint in the WSDL.
        `metadata` - A list of elements that should be added to the `W3CEndpointReference` instances `wsa:metadata` element.
        `wsdlDocumentLocation` - URL for the WSDL document location for the service.
        `referenceParameters` - Reference parameters to be associated with the returned `EndpointReference` instance.
        `elements` - extension elements to be associated with the returned `EndpointReference` instance.
        `attributes` - extension attributes to be associated with the returned `EndpointReference` instance.
      Returns:
        the `W3CEndpointReference` created from `serviceName`, `portName`, `metadata`, `wsdlDocumentLocation` and `referenceParameters`. This method never returns `null`.
      Throws:
        `IllegalStateException` -
        - If the `address`, `serviceName` and `portName` are all `null`.
        - If the `serviceName` service is `null` and the `portName` is NOT `null`.
        - If the `address` property is `null` and the `serviceName` and `portName` do not specify a valid endpoint published by the same Java EE application.
        - If the `serviceName`is NOT `null` and is not present in the specified WSDL.
        - If the `portName` port is not `null` and it is not present in `serviceName` service in the WSDL.
        - If the `wsdlDocumentLocation` is NOT `null` and does not represent a valid WSDL.
        - If the `wsdlDocumentLocation` is NOT `null` but wsdli:wsdlLocation's namespace name cannot be got from the available metadata.
        `WebServiceException` - If an error occurs while creating the `W3CEndpointReference`.
      Since:
        JAX-WS 2.2

    - #### createAndPublishEndpoint

          public Endpoint createAndPublishEndpoint(String address,
                                          Object implementor,
                                          WebServiceFeature... features)

      Creates and publishes an endpoint object with the specified address, implementation object and web service features. `Provider` implementations must override the default implementation.
      Parameters:
        `address` - A URI specifying the address and transport/protocol to use. A http: URI MUST result in the SOAP 1.1/HTTP binding being used. Implementations may support other URI schemes.
        `implementor` - A service implementation object to which incoming requests will be dispatched. The corresponding class MUST be annotated with all the necessary Web service annotations.
        `features` - A list of WebServiceFeatures to configure on the endpoint. Supported features not in the `features` parameter will have their default values.
      Returns:
        The newly created endpoint.
      Since:
        JAX-WS 2.2

    - #### createEndpoint

          public Endpoint createEndpoint(String bindingId,
                                Object implementor,
                                WebServiceFeature... features)

      Creates an endpoint object with the provided binding, implementation object and web service features. `Provider` implementations must override the default implementation.
      Parameters:
        `bindingId` - A URI specifying the desired binding (e.g. SOAP/HTTP)
        `implementor` - A service implementation object to which incoming requests will be dispatched. The corresponding class MUST be annotated with all the necessary Web service annotations.
        `features` - A list of WebServiceFeatures to configure on the endpoint. Supported features not in the `features` parameter will have their default values.
      Returns:
        The newly created endpoint.
      Since:
        JAX-WS 2.2

    - #### createEndpoint

          public Endpoint createEndpoint(String bindingId,
                                Class<?> implementorClass,
                                Invoker invoker,
                                WebServiceFeature... features)

      Creates an endpoint object with the provided binding, implementation class, invoker and web service features. Containers typically use this to create Endpoint objects. `Provider` implementations must override the default implementation.
      Parameters:
        `bindingId` - A URI specifying the desired binding (e.g. SOAP/HTTP). Can be null.
        `implementorClass` - A service implementation class that MUST be annotated with all the necessary Web service annotations.
        `invoker` - that does the actual invocation on the service instance.
        `features` - A list of WebServiceFeatures to configure on the endpoint. Supported features not in the `features` parameter will have their default values.
      Returns:
        The newly created endpoint.
      Since:
        JAX-WS 2.2

Copyright © 1996-2013, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.