Module java.xml.ws
Package 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:
  1.6, JAX-WS 2.0

### Constructor Summary

Constructors
`protected` `Provider()` Creates a new instance of Provider

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`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`

### 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:

- Use the service-provider loading facilities, defined by the `ServiceLoader` class, to attempt to locate and load an implementation of `Provider` service using the default loading mechanism.
- Use the configuration file "jaxws.properties". The file is in standard `Properties` format and typically located in the `conf` directory of the Java installation. It contains the fully qualified name of the implementation class with the key `javax.xml.ws.spi.Provider`.
- 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 platform default implementation 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:
  1.7, 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:
  1.6, 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:
  1.6, 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` properties. 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:
  1.6, 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:
  1.7, 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:
  1.7, 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:
  1.7, 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:
  1.7, JAX-WS 2.2