com.sun.xml.ws.api
Class WSService

java.lang.Object
  extended by javax.xml.ws.spi.ServiceDelegate
      extended by com.sun.xml.ws.api.WSService
All Implemented Interfaces:
Component, ComponentRegistry
Direct Known Subclasses:
WSServiceDelegate

public abstract class WSService
extends javax.xml.ws.spi.ServiceDelegate
implements ComponentRegistry

JAX-WS implementation of 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.


Nested Class Summary
static class WSService.InitParams
          Typed parameter bag used by create(URL, QName, InitParams)
 
Field Summary
protected static WSService.InitParams EMPTY_PARAMS
          Used as a immutable constant so that we can avoid null check.
protected static java.lang.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.
 
Constructor Summary
protected WSService()
           
 
Method Summary
static WSService create()
          Creates a service with a dummy service name.
static WSService create(javax.xml.namespace.QName serviceName)
          Create a Service instance.
static WSService create(java.net.URL wsdlDocumentLocation, javax.xml.namespace.QName serviceName)
          Create a Service instance.
static javax.xml.ws.Service create(java.net.URL wsdlDocumentLocation, javax.xml.namespace.QName serviceName, WSService.InitParams properties)
          Creates a Service instance.
abstract
<T> javax.xml.ws.Dispatch<T>
createDispatch(javax.xml.namespace.QName portName, WSEndpointReference wsepr, java.lang.Class<T> aClass, javax.xml.ws.Service.Mode mode, javax.xml.ws.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  javax.xml.ws.Dispatch<java.lang.Object> createDispatch(javax.xml.namespace.QName portName, WSEndpointReference wsepr, javax.xml.bind.JAXBContext jaxbContext, javax.xml.ws.Service.Mode mode, javax.xml.ws.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.
 java.util.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, java.lang.Class<T> portInterface, javax.xml.ws.WebServiceFeature... features)
          Works like ServiceDelegate.getPort(EndpointReference, Class, WebServiceFeature...) but takes WSEndpointReference.
<S> S
getSPI(java.lang.Class<S> spiType)
          Gets the specified SPI.
static WSService unwrap(javax.xml.ws.Service svc)
          Obtains the WSService that's encapsulated inside a Service.
 
Methods inherited from class javax.xml.ws.spi.ServiceDelegate
addPort, createDispatch, createDispatch, createDispatch, createDispatch, createDispatch, createDispatch, getExecutor, getHandlerResolver, getPort, getPort, getPort, getPort, getPort, getPorts, getServiceName, getWSDLDocumentLocation, setExecutor, setHandlerResolver
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

INIT_PARAMS

protected static final java.lang.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.


EMPTY_PARAMS

protected static final WSService.InitParams EMPTY_PARAMS
Used as a immutable constant so that we can avoid null check.

Constructor Detail

WSService

protected WSService()
Method Detail

getPort

public abstract <T> T getPort(WSEndpointReference epr,
                              java.lang.Class<T> portInterface,
                              javax.xml.ws.WebServiceFeature... features)
Works like ServiceDelegate.getPort(EndpointReference, Class, WebServiceFeature...) but takes WSEndpointReference.


createDispatch

public abstract <T> javax.xml.ws.Dispatch<T> createDispatch(javax.xml.namespace.QName portName,
                                                            WSEndpointReference wsepr,
                                                            java.lang.Class<T> aClass,
                                                            javax.xml.ws.Service.Mode mode,
                                                            javax.xml.ws.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.


createDispatch

public abstract javax.xml.ws.Dispatch<java.lang.Object> createDispatch(javax.xml.namespace.QName portName,
                                                                       WSEndpointReference wsepr,
                                                                       javax.xml.bind.JAXBContext jaxbContext,
                                                                       javax.xml.ws.Service.Mode mode,
                                                                       javax.xml.ws.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.


getContainer

@NotNull
public abstract Container getContainer()
Gets the Container object.

The components inside WSEndpoint uses this reference to communicate with the hosting environment.

Returns:
always same object. If no "real" Container instance is given, Container.NONE will be returned.

getSPI

@Nullable
public <S> S getSPI(@NotNull
                             java.lang.Class<S> spiType)
Description copied from interface: Component
Gets the specified SPI.

This method works as a kind of directory service for SPIs, allowing various components to define private contract and talk to each other.

Specified by:
getSPI in interface Component
Returns:
null if such an SPI is not provided by this object.

getComponents

@NotNull
public java.util.Set<Component> getComponents()
Description copied from interface: ComponentRegistry
Returns the set of Components registered with this object

Specified by:
getComponents in interface ComponentRegistry
Returns:
set of registered components

create

public static WSService create(java.net.URL wsdlDocumentLocation,
                               javax.xml.namespace.QName serviceName)
Create a Service instance. The specified WSDL document location and service qualified name MUST uniquely identify a wsdl:service element.

Parameters:
wsdlDocumentLocation - URL for the WSDL document location for the service
serviceName - QName for the service
Throws:
javax.xml.ws.WebServiceException - If any error in creation of the specified service.

create

public static WSService create(javax.xml.namespace.QName serviceName)
Create a Service instance.

Parameters:
serviceName - QName for the service
Throws:
javax.xml.ws.WebServiceException - If any error in creation of the specified service

create

public static WSService create()
Creates a service with a dummy service name.


create

public static javax.xml.ws.Service create(java.net.URL wsdlDocumentLocation,
                                          javax.xml.namespace.QName serviceName,
                                          WSService.InitParams properties)
Creates a Service instance.

This method works really like Service.create(URL, QName) except it takes one more RI specific parameter.

Parameters:
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.
Throws:
javax.xml.ws.WebServiceException - If any error in creation of the specified service.

unwrap

public static WSService unwrap(javax.xml.ws.Service svc)
Obtains the WSService that's encapsulated inside a Service.

Throws:
java.lang.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.