com.sun.xml.ws.server
Class WSEndpointImpl<T>

java.lang.Object
  extended by com.sun.xml.ws.api.server.WSEndpoint<T>
      extended by com.sun.xml.ws.server.WSEndpointImpl<T>

public final class WSEndpointImpl<T>
extends WSEndpoint<T>

WSEndpoint implementation.


Nested Class Summary
 
Nested classes/interfaces inherited from class com.sun.xml.ws.api.server.WSEndpoint
WSEndpoint.CompletionCallback, WSEndpoint.PipeHead
 
Constructor Summary
WSEndpointImpl(QName serviceName, QName portName, WSBinding binding, Container container, SEIModel seiModel, WSDLPort port, Class<T> implementationClass, ServiceDefinitionImpl serviceDef, InvokerTube terminalTube, boolean isSynchronous)
           
 
Method Summary
 Codec createCodec()
          Gets the Endpoint's codec that is used to encode/decode Messages.
 WSEndpoint.PipeHead createPipeHead()
          Creates a new WSEndpoint.PipeHead to process incoming requests.
 void dispose()
          Indicates that the WSEndpoint is about to be turned off, and will no longer serve any packet anymore.
 WSBinding getBinding()
          Represents the binding for which this WSEndpoint is created for.
 Set<EndpointComponent> getComponentRegistry()
          Gets the list of EndpointComponent that are associated with this endpoint.
 Container getContainer()
          Gets the Container object.
<T extends javax.xml.ws.EndpointReference>
T
getEndpointReference(Class<T> clazz, String address, String wsdlAddress, Element... referenceParameters)
           
 Class<T> getImplementationClass()
          Gets the application endpoint Class that eventually serves the request.
 WSDLPort getPort()
          Gets the port that this endpoint is serving.
 QName getPortName()
          Gets the application endpoint's portName.
 SEIModel getSEIModel()
          Gets the SEIModel that represents the relationship between WSDL and Java SEI.
 ServiceDefinitionImpl getServiceDefinition()
          Gets the description of the service.
 QName getServiceName()
          Gets the application endpoint's serviceName.
 void schedule(Packet request, WSEndpoint.CompletionCallback callback, FiberContextSwitchInterceptor interceptor)
          Schedule invocation of web service asynchronously.
 void setExecutor(Executor exec)
          Set this Executor to run asynchronous requests using this executor.
 
Methods inherited from class com.sun.xml.ws.api.server.WSEndpoint
create, create, create, getDefaultPortName, getDefaultServiceName, schedule
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

WSEndpointImpl

WSEndpointImpl(@NotNull
               QName serviceName,
               @NotNull
               QName portName,
               WSBinding binding,
               Container container,
               SEIModel seiModel,
               WSDLPort port,
               Class<T> implementationClass,
               @Nullable
               ServiceDefinitionImpl serviceDef,
               InvokerTube terminalTube,
               boolean isSynchronous)
Method Detail

getImplementationClass

@NotNull
public Class<T> getImplementationClass()
Description copied from class: WSEndpoint
Gets the application endpoint Class that eventually serves the request.

This is the same value given to the WSEndpoint.create(java.lang.Class, boolean, com.sun.xml.ws.api.server.Invoker, javax.xml.namespace.QName, javax.xml.namespace.QName, com.sun.xml.ws.api.server.Container, com.sun.xml.ws.api.WSBinding, com.sun.xml.ws.api.server.SDDocumentSource, java.util.Collection, org.xml.sax.EntityResolver, boolean) method.

Specified by:
getImplementationClass in class WSEndpoint<T>

getBinding

@NotNull
public WSBinding getBinding()
Description copied from class: WSEndpoint
Represents the binding for which this WSEndpoint is created for.

Specified by:
getBinding in class WSEndpoint<T>
Returns:
always same object.

getContainer

@NotNull
public Container getContainer()
Description copied from class: WSEndpoint
Gets the Container object.

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

Specified by:
getContainer in class WSEndpoint<T>
Returns:
always same object. If no "real" Container instance is given, Container.NONE will be returned.

getPort

public WSDLPort getPort()
Description copied from class: WSEndpoint
Gets the port that this endpoint is serving.

A service is not required to have a WSDL, and when it doesn't, this method returns null. Otherwise it returns an object that describes the port that this WSEndpoint is serving.

Specified by:
getPort in class WSEndpoint<T>
Returns:
Possibly null, but always the same value.

getSEIModel

@Nullable
public SEIModel getSEIModel()
Description copied from class: WSEndpoint
Gets the SEIModel that represents the relationship between WSDL and Java SEI.

This method returns a non-null value if and only if this endpoint is ultimately serving an application through an SEI.

Specified by:
getSEIModel in class WSEndpoint<T>
Returns:
maybe null. See above for more discussion. Always the same value.

setExecutor

public void setExecutor(Executor exec)
Description copied from class: WSEndpoint
Set this Executor to run asynchronous requests using this executor. This executor is set on Engine and must be set before calling WSEndpoint.schedule(Packet,CompletionCallback) and WSEndpoint.schedule(Packet,CompletionCallback,FiberContextSwitchInterceptor) methods.

Specified by:
setExecutor in class WSEndpoint<T>
Parameters:
exec - Executor to run async requests

schedule

public void schedule(Packet request,
                     WSEndpoint.CompletionCallback callback,
                     FiberContextSwitchInterceptor interceptor)
Description copied from class: WSEndpoint
Schedule invocation of web service asynchronously.

Specified by:
schedule in class WSEndpoint<T>
Parameters:
request - web service request
callback - callback to get response packet(exception if there is one)
interceptor - caller's interceptor to impose a context of execution
See Also:
#schedule(Packet, CompletionCallback)}

createPipeHead

@NotNull
public WSEndpoint.PipeHead createPipeHead()
Description copied from class: WSEndpoint
Creates a new WSEndpoint.PipeHead to process incoming requests.

This is not a cheap operation. The caller is expected to reuse the returned WSEndpoint.PipeHead. See class javadoc for details.

Specified by:
createPipeHead in class WSEndpoint<T>
Returns:
A newly created WSEndpoint.PipeHead that's ready to serve.

dispose

public void dispose()
Description copied from class: WSEndpoint
Indicates that the WSEndpoint is about to be turned off, and will no longer serve any packet anymore.

This method needs to be invoked for the JAX-WS RI to correctly implement some of the spec semantics (TODO: pointer.) It's the responsibility of the code that hosts a WSEndpoint to invoke this method.

Once this method is called, the behavior is undefed for all in-progress WSEndpoint.PipeHead.process(com.sun.xml.ws.api.message.Packet, com.sun.xml.ws.api.server.WebServiceContextDelegate, com.sun.xml.ws.api.server.TransportBackChannel) methods (by other threads) and future WSEndpoint.PipeHead.process(com.sun.xml.ws.api.message.Packet, com.sun.xml.ws.api.server.WebServiceContextDelegate, com.sun.xml.ws.api.server.TransportBackChannel) method invocations.

Specified by:
dispose in class WSEndpoint<T>

getServiceDefinition

public ServiceDefinitionImpl getServiceDefinition()
Description copied from class: WSEndpoint
Gets the description of the service.

A description is a set of WSDL/schema and other documents that together describes a service. A service is not required to have a description, and when it doesn't, this method returns null.

Specified by:
getServiceDefinition in class WSEndpoint<T>
Returns:
Possibly null, but always the same value.

getComponentRegistry

public Set<EndpointComponent> getComponentRegistry()
Description copied from class: WSEndpoint
Gets the list of EndpointComponent that are associated with this endpoint.

Components (such as codec, tube, handler, etc) who wish to provide some service to other components in the endpoint can iterate the registry and call its EndpointComponent.getSPI(Class) to establish a private contract between components.

Components who wish to subscribe to such a service can add itself to this set.

Specified by:
getComponentRegistry in class WSEndpoint<T>
Returns:
always return the same set.

getEndpointReference

public <T extends javax.xml.ws.EndpointReference> T getEndpointReference(Class<T> clazz,
                                                                         String address,
                                                                         String wsdlAddress,
                                                                         Element... referenceParameters)

getPortName

@NotNull
public QName getPortName()
Description copied from class: WSEndpoint
Gets the application endpoint's portName. It could be got from DD or annotations

Specified by:
getPortName in class WSEndpoint<T>
Returns:
same as wsdl:port QName if WSDL exists or generated

createCodec

@NotNull
public Codec createCodec()
Description copied from class: WSEndpoint
Gets the Endpoint's codec that is used to encode/decode Messages. This is a copy of the master codec and it shouldn't be shared across two requests running concurrently(unless it is stateless).

Specified by:
createCodec in class WSEndpoint<T>
Returns:
codec to encode/decode

getServiceName

@NotNull
public QName getServiceName()
Description copied from class: WSEndpoint
Gets the application endpoint's serviceName. It could be got from DD or annotations

Specified by:
getServiceName in class WSEndpoint<T>
Returns:
same as wsdl:service QName if WSDL exists or generated