public abstract class InstanceResolver<T> extends Object
The JAX-WS spec always use a singleton instance to serve all the requests, but this hook provides a convenient way to route messages to a proper receiver.
Externally, an instance of InstanceResolver
is
associated with WSEndpoint
.
One can use WS-Addressing message properties to decide which instance to deliver a message. This would be an important building block for a stateful web services.
One can associate an instance of a service with a specific WS-RM session.
Constructor and Description |
---|
InstanceResolver() |
Modifier and Type | Method and Description |
---|---|
static <T> InstanceResolver<T> |
createDefault(Class<T> clazz)
Creates a default
InstanceResolver that serves the given class. |
static <T> InstanceResolver<T> |
createDefault(Class<T> clazz,
boolean bool)
Deprecated.
This is added here because a Glassfish integration happened
with this signature. Please do not use this. Will be removed
after the next GF integration.
|
static <T> InstanceResolver<T> |
createFromInstanceResolverAnnotation(Class<T> clazz)
Checks for
InstanceResolverAnnotation and creates an instance resolver from it if any. |
Invoker |
createInvoker()
Wraps this
InstanceResolver into an Invoker . |
protected static <T> T |
createNewInstance(Class<T> cl) |
static <T> InstanceResolver<T> |
createSingleton(T singleton)
Creates a
InstanceResolver implementation that always
returns the specified singleton instance. |
void |
dispose()
Called by
WSEndpoint
when WSEndpoint.dispose() is called. |
void |
postInvoke(Packet request,
T servant)
Called by the default
Invoker after the method call is done. |
abstract T |
resolve(Packet request)
Decides which instance of 'T' serves the given request message.
|
void |
start(WebServiceContext wsc)
Deprecated.
|
void |
start(WSWebServiceContext wsc,
WSEndpoint endpoint)
Called by
WSEndpoint when it's set up. |
@NotNull public abstract T resolve(@NotNull Packet request)
This method is called concurrently by multiple threads. It is also on a criticail path that affects the performance. A good implementation should try to avoid any synchronization, and should minimize the amount of work as much as possible.
request
- Always non-null. Represents the request message to be served.
The caller may not consume the Message
.public void postInvoke(@NotNull Packet request, @NotNull T servant)
Invoker
after the method call is done.
This gives InstanceResolver
a chance to do clean up.
Alternatively, one could override createInvoker()
to
create a custom invoker to do this in more flexible way.
The default implementation is a no-op.
request
- The same request packet given to resolve(Packet)
method.servant
- The object returned from the resolve(Packet)
method.public void start(@NotNull WSWebServiceContext wsc, @NotNull WSEndpoint endpoint)
WSEndpoint
when it's set up.
This is an opportunity for InstanceResolver
to do a endpoint-specific initialization process.
wsc
- The WebServiceContext
instance to be injected
to the user instances (assuming InstanceResolver
public void start(@NotNull WebServiceContext wsc)
start(WSWebServiceContext,WSEndpoint)
.public void dispose()
WSEndpoint
when WSEndpoint.dispose()
is called.
This allows InstanceResolver
to do final clean up.
This method is guaranteed to be only called once by WSEndpoint
.
public static <T> InstanceResolver<T> createSingleton(T singleton)
InstanceResolver
implementation that always
returns the specified singleton instance.public static <T> InstanceResolver<T> createDefault(@NotNull Class<T> clazz, boolean bool)
public static <T> InstanceResolver<T> createDefault(@NotNull Class<T> clazz)
InstanceResolver
that serves the given class.public static <T> InstanceResolver<T> createFromInstanceResolverAnnotation(@NotNull Class<T> clazz)
InstanceResolverAnnotation
and creates an instance resolver from it if any.
Otherwise null.protected static <T> T createNewInstance(Class<T> cl)
@NotNull public Invoker createInvoker()
InstanceResolver
into an Invoker
.Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.