Class InstanceResolver<T>

  • Direct Known Subclasses:
    AbstractInstanceResolver

    public abstract class InstanceResolver<T>
    extends Object
    Determines the instance that serves the given request packet.

    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.

    Possible Uses

    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.

    Author:
    Kohsuke Kawaguchi
    • Constructor Detail

      • InstanceResolver

        public InstanceResolver()
    • Method Detail

      • resolve

        @NotNull
        public abstract T resolve​(@NotNull
                                  Packet request)
        Decides which instance of 'T' serves the given request message.

        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.

        Parameters:
        request - Always non-null. Represents the request message to be served. The caller may not consume the Message.
      • postInvoke

        public void postInvoke​(@NotNull
                               Packet request,
                               @NotNull
                               T servant)
        Called by the default 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.

        Parameters:
        request - The same request packet given to resolve(Packet) method.
        servant - The object returned from the resolve(Packet) method.
        Since:
        2.1.2
      • createSingleton

        public static <T> InstanceResolver<T> createSingleton​(T singleton)
        Creates a InstanceResolver implementation that always returns the specified singleton instance.
      • createDefault

        public static <T> InstanceResolver<T> createDefault​(@NotNull
                                                            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.
      • createFromInstanceResolverAnnotation

        public static <T> InstanceResolver<T> createFromInstanceResolverAnnotation​(@NotNull
                                                                                   Class<T> clazz)
        Checks for InstanceResolverAnnotation and creates an instance resolver from it if any. Otherwise null.
      • createNewInstance

        protected static <T> T createNewInstance​(Class<T> cl)