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
`static String` `JAXWSPROVIDER_PROPERTY` A constant representing the property used to lookup the name of a `Provider` implementation class.

### Constructor Summary

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

### Method Summary

Methods
`abstract Endpoint` `createAndPublishEndpoint(String address, Object implementor)` Creates and publishes an endpoint object with the specified address and implementation object.
`abstract Endpoint` `createEndpoint(String bindingId, Object implementor)` Creates an endpoint object with the provided binding and implementation object.
`abstract ServiceDelegate` `createServiceDelegate(URL wsdlDocumentLocation, QName serviceName, Class serviceClass)` 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`.
`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 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.

#### 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`.

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

Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.