public abstract class WSService extends ServiceDelegate implements ComponentRegistry
ServiceDelegate.
This abstract class is used only to improve the static type safety of the JAX-WS internal API.
The class name intentionally doesn't include "Delegate",
because the fact that it's a delegate is a detail of
the JSR-224 API, and for the layers above us this object
nevertheless represents Service. We want them
to think of this as an internal representation of a service.
Only JAX-WS internal code may downcast this to WSServiceDelegate.
| Modifier and Type | Class and Description |
|---|---|
static class |
WSService.InitParams
Typed parameter bag used by
create(URL, QName, InitParams) |
| Modifier and Type | Field and Description |
|---|---|
protected static WSService.InitParams |
EMPTY_PARAMS
Used as a immutable constant so that we can avoid null check.
|
protected static ThreadLocal<WSService.InitParams> |
INIT_PARAMS
To create a
Service, we need to go through the API that doesn't let us
pass parameters, so as a hack we use thread local. |
| Modifier | Constructor and Description |
|---|---|
protected |
WSService() |
| Modifier and Type | Method and Description |
|---|---|
static WSService |
create()
Creates a service with a dummy service name.
|
static WSService |
create(QName serviceName)
Create a
Service instance. |
static WSService |
create(URL wsdlDocumentLocation,
QName serviceName)
Create a
Service instance. |
static Service |
create(URL wsdlDocumentLocation,
QName serviceName,
WSService.InitParams properties)
Creates a
Service instance. |
abstract <T> Dispatch<T> |
createDispatch(QName portName,
WSEndpointReference wsepr,
Class<T> aClass,
Service.Mode mode,
WebServiceFeature... features)
Works like
#createDispatch(EndpointReference, Class, Mode, WebServiceFeature[])
but it takes the port name separately, so that EPR without embedded metadata can be used. |
abstract Dispatch<Object> |
createDispatch(QName portName,
WSEndpointReference wsepr,
JAXBContext jaxbContext,
Service.Mode mode,
WebServiceFeature... features)
Works like
#createDispatch(EndpointReference, JAXBContext, Mode, WebServiceFeature[])
but it takes the port name separately, so that EPR without embedded metadata can be used. |
Set<Component> |
getComponents()
Returns the set of
Components registered with this object |
abstract Container |
getContainer()
Gets the
Container object. |
abstract <T> T |
getPort(WSEndpointReference epr,
Class<T> portInterface,
WebServiceFeature... features)
Works like
ServiceDelegate.getPort(EndpointReference, Class, WebServiceFeature...)
but takes WSEndpointReference. |
<S> S |
getSPI(Class<S> spiType)
Gets the specified SPI.
|
static WSService |
unwrap(Service svc)
|
addPort, createDispatch, createDispatch, createDispatch, createDispatch, createDispatch, createDispatch, getExecutor, getHandlerResolver, getPort, getPort, getPort, getPort, getPort, getPorts, getServiceName, getWSDLDocumentLocation, setExecutor, setHandlerResolverprotected static final ThreadLocal<WSService.InitParams> INIT_PARAMS
Service, we need to go through the API that doesn't let us
pass parameters, so as a hack we use thread local.protected static final WSService.InitParams EMPTY_PARAMS
public abstract <T> T getPort(WSEndpointReference epr, Class<T> portInterface, WebServiceFeature... features)
ServiceDelegate.getPort(EndpointReference, Class, WebServiceFeature...)
but takes WSEndpointReference.public abstract <T> Dispatch<T> createDispatch(QName portName, WSEndpointReference wsepr, Class<T> aClass, Service.Mode mode, WebServiceFeature... features)
#createDispatch(EndpointReference, Class, Mode, WebServiceFeature[])
but it takes the port name separately, so that EPR without embedded metadata can be used.public abstract Dispatch<Object> createDispatch(QName portName, WSEndpointReference wsepr, JAXBContext jaxbContext, Service.Mode mode, WebServiceFeature... features)
#createDispatch(EndpointReference, JAXBContext, Mode, WebServiceFeature[])
but it takes the port name separately, so that EPR without embedded metadata can be used.@NotNull public abstract Container getContainer()
Container object.
The components inside WSEndpoint uses this reference
to communicate with the hosting environment.
Container instance
is given, Container.NONE will be returned.@Nullable
public <S> S getSPI(@NotNull
Class<S> spiType)
ComponentThis method works as a kind of directory service for SPIs, allowing various components to define private contract and talk to each other.
@NotNull public Set<Component> getComponents()
ComponentRegistryComponents registered with this objectgetComponents in interface ComponentRegistrypublic static WSService create(URL wsdlDocumentLocation, QName serviceName)
Service instance.
The specified WSDL document location and service qualified name MUST
uniquely identify a wsdl:service element.wsdlDocumentLocation - URL for the WSDL document location
for the serviceserviceName - QName for the serviceWebServiceException - If any error in creation of the
specified service.public static WSService create(QName serviceName)
Service instance.serviceName - QName for the serviceWebServiceException - If any error in creation of the
specified servicepublic static WSService create()
public static Service create(URL wsdlDocumentLocation, QName serviceName, WSService.InitParams properties)
Service instance.
This method works really like Service.create(URL, QName)
except it takes one more RI specific parameter.
wsdlDocumentLocation - URL for the WSDL document location for the service.
Can be null, in which case WSDL is not loaded.serviceName - QName for the service.properties - Additional RI specific initialization parameters. Can be null.WebServiceException - If any error in creation of the specified service.public static WSService unwrap(Service svc)
IllegalArgumentException - if the given service object is not from the JAX-WS RI.Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.