Class WSService

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

public abstract class WSService extends jakarta.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.

Author:
Kohsuke Kawaguchi
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static final class 
    Typed parameter bag used by create(URL, QName, InitParams)
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static final WSService.InitParams
    Used as a immutable constant so that we can avoid null check.
    protected static final ThreadLocal<WSService.InitParams>
    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

    Constructors
    Modifier
    Constructor
    Description
    protected
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static WSService
    Creates a service with a dummy service name.
    static WSService
    create(URL wsdlDocumentLocation, QName serviceName)
    Create a Service instance.
    static jakarta.xml.ws.Service
    create(URL wsdlDocumentLocation, QName serviceName, WSService.InitParams properties)
    Creates a Service instance.
    static WSService
    create(QName serviceName)
    Create a Service instance.
    abstract jakarta.xml.ws.Dispatch<Object>
    createDispatch(QName portName, WSEndpointReference wsepr, jakarta.xml.bind.JAXBContext jaxbContext, jakarta.xml.ws.Service.Mode mode, jakarta.xml.ws.WebServiceFeature... features)
    Works like ServiceDelegate.createDispatch(jakarta.xml.ws.EndpointReference, jakarta.xml.bind.JAXBContext, jakarta.xml.ws.Service.Mode, jakarta.xml.ws.WebServiceFeature[]) but it takes the port name separately, so that EPR without embedded metadata can be used.
    abstract <T> jakarta.xml.ws.Dispatch<T>
    createDispatch(QName portName, WSEndpointReference wsepr, Class<T> aClass, jakarta.xml.ws.Service.Mode mode, jakarta.xml.ws.WebServiceFeature... features)
    Works like ServiceDelegate.createDispatch(jakarta.xml.ws.EndpointReference, java.lang.Class, jakarta.xml.ws.Service.Mode, jakarta.xml.ws.WebServiceFeature[]) but it takes the port name separately, so that EPR without embedded metadata can be used.
    Returns the set of Components registered with this object
    abstract Container
    Gets the Container object.
    abstract <T> T
    getPort(WSEndpointReference epr, Class<T> portInterface, jakarta.xml.ws.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(jakarta.xml.ws.Service svc)
    Obtains the WSService that's encapsulated inside a Service.

    Methods inherited from class jakarta.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 Details

    • INIT_PARAMS

      protected static final 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 Details

    • WSService

      protected WSService()
  • Method Details

    • getPort

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

      public abstract <T> jakarta.xml.ws.Dispatch<T> createDispatch(QName portName, WSEndpointReference wsepr, Class<T> aClass, jakarta.xml.ws.Service.Mode mode, jakarta.xml.ws.WebServiceFeature... features)
      Works like ServiceDelegate.createDispatch(jakarta.xml.ws.EndpointReference, java.lang.Class, jakarta.xml.ws.Service.Mode, jakarta.xml.ws.WebServiceFeature[]) but it takes the port name separately, so that EPR without embedded metadata can be used.
    • createDispatch

      public abstract jakarta.xml.ws.Dispatch<Object> createDispatch(QName portName, WSEndpointReference wsepr, jakarta.xml.bind.JAXBContext jaxbContext, jakarta.xml.ws.Service.Mode mode, jakarta.xml.ws.WebServiceFeature... features)
      Works like ServiceDelegate.createDispatch(jakarta.xml.ws.EndpointReference, jakarta.xml.bind.JAXBContext, jakarta.xml.ws.Service.Mode, jakarta.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 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 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(URL wsdlDocumentLocation, 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:
      jakarta.xml.ws.WebServiceException - If any error in creation of the specified service.
    • create

      public static WSService create(QName serviceName)
      Create a Service instance.
      Parameters:
      serviceName - QName for the service
      Throws:
      jakarta.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 jakarta.xml.ws.Service create(URL wsdlDocumentLocation, 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:
      jakarta.xml.ws.WebServiceException - If any error in creation of the specified service.
    • unwrap

      public static WSService unwrap(jakarta.xml.ws.Service svc)
      Obtains the WSService that's encapsulated inside a Service.
      Throws:
      IllegalArgumentException - if the given service object is not from the JAX-WS RI.