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
ServiceDelegate.createDispatch(javax.xml.ws.EndpointReference, java.lang.Class, javax.xml.ws.Service.Mode, javax.xml.ws.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
ServiceDelegate.createDispatch(javax.xml.ws.EndpointReference, javax.xml.bind.JAXBContext, javax.xml.ws.Service.Mode, javax.xml.ws.WebServiceFeature[])
but it takes the port name separately, so that EPR without embedded metadata can be used. |
Set<Component> |
getComponents()
Returns the set of
Component s 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, setHandlerResolver
protected 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)
ServiceDelegate.createDispatch(javax.xml.ws.EndpointReference, java.lang.Class, javax.xml.ws.Service.Mode, javax.xml.ws.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)
ServiceDelegate.createDispatch(javax.xml.ws.EndpointReference, javax.xml.bind.JAXBContext, javax.xml.ws.Service.Mode, javax.xml.ws.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)
Component
This 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()
ComponentRegistry
Component
s registered with this objectgetComponents
in interface ComponentRegistry
public 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 © 2015 Oracle Corporation. All rights reserved.