Class 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.

    Author:
    Kohsuke Kawaguchi
    • Field Detail

      • 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 Detail

      • WSService

        protected WSService()
    • Method Detail

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