Class ApplicationHandler

  • All Implemented Interfaces:
    ContainerLifecycleListener

    public final class ApplicationHandler
    extends java.lang.Object
    implements ContainerLifecycleListener
    Jersey server-side application handler.

    Container implementations use the ApplicationHandler API to process requests by invoking the handle(request) method on a configured application handler instance.

    ApplicationHandler provides two implementations of config that can be injected into the application classes. The first is resource config which implements Configuration itself and is configured by the user. The resource config is not modified by this application handler so the future reloads of the application is not disrupted by providers found on a classpath. This config can be injected only as ResourceConfig or Application. The second one can be injected into the Configuration parameters / fields and contains info about all the properties / provider classes / provider instances from the resource config and also about all the providers found during processing classes registered under server properties. After the application handler is initialized both configurations are marked as read-only.

    Application handler instance also acts as an aggregate ContainerLifecycleListener instance for the associated application. It aggregates all the registered container lifecycle listeners under a single, umbrella listener, represented by this application handler instance, that delegates all container lifecycle listener method calls to all the registered listeners. Jersey containers are expected to invoke the container lifecycle methods directly on the active ApplicationHandler instance. The application handler will then make sure to delegate the lifecycle listener calls further to all the container lifecycle listeners registered within the application. Additionally, invoking the ContainerLifecycleListener.onShutdown(Container) method on this application handler instance will release all the resources associated with the underlying application instance as well as close the application-specific injection manager.

    See Also:
    ResourceConfig, Configuration, ContainerProvider
    • Field Detail

      • LOGGER

        private static final java.util.logging.Logger LOGGER
      • DEFAULT_SECURITY_CONTEXT

        private static final javax.ws.rs.core.SecurityContext DEFAULT_SECURITY_CONTEXT
        Default dummy security context.
      • application

        private javax.ws.rs.core.Application application
    • Constructor Detail

      • ApplicationHandler

        public ApplicationHandler()
        Create a new Jersey application handler using a default configuration.
      • ApplicationHandler

        public ApplicationHandler​(java.lang.Class<? extends javax.ws.rs.core.Application> jaxrsApplicationClass)
        Create a new Jersey server-side application handler configured by a JAX-RS Application (sub-)class.
        Parameters:
        jaxrsApplicationClass - JAX-RS Application (sub-)class that will be instantiated and used to configure the new Jersey application handler.
      • ApplicationHandler

        public ApplicationHandler​(javax.ws.rs.core.Application application)
        Create a new Jersey server-side application handler configured by an instance of a JAX-RS Application sub-class.
        Parameters:
        application - an instance of a JAX-RS Application (sub-)class that will be used to configure the new Jersey application handler.
      • ApplicationHandler

        public ApplicationHandler​(javax.ws.rs.core.Application application,
                                  Binder customBinder)
        Create a new Jersey server-side application handler configured by an instance of a ResourceConfig and a custom Binder.
        Parameters:
        application - an instance of a JAX-RS Application (sub-)class that will be used to configure the new Jersey application handler.
        customBinder - additional custom bindings used to configure the application's.
      • ApplicationHandler

        public ApplicationHandler​(javax.ws.rs.core.Application application,
                                  Binder customBinder,
                                  java.lang.Object parentManager)
        Create a new Jersey server-side application handler configured by an instance of a ResourceConfig, custom Binder and a parent used by InjectionManager.
        Parameters:
        application - an instance of a JAX-RS Application (sub-)class that will be used to configure the new Jersey application handler.
        customBinder - additional custom bindings used during InjectionManager creation.
        parentManager - parent used in InjectionManager for a specific DI provider.
    • Method Detail

      • ignoreValidationError

        private boolean ignoreValidationError()
      • disableValidation

        private boolean disableValidation()
      • printNameBoundProviders

        private static <T> void printNameBoundProviders​(java.lang.String title,
                                                        java.util.Map<java.lang.Class<? extends java.lang.annotation.Annotation>,​java.util.List<RankedProvider<T>>> providers,
                                                        java.lang.StringBuilder sb)
      • printProviders

        private static <T> void printProviders​(java.lang.String title,
                                               java.lang.Iterable<T> providers,
                                               java.lang.StringBuilder sb)
      • apply

        public java.util.concurrent.Future<ContainerResponse> apply​(ContainerRequest requestContext)
        Invokes a request and returns the response future.
        Parameters:
        requestContext - request data.
        Returns:
        response future.
      • apply

        public java.util.concurrent.Future<ContainerResponse> apply​(ContainerRequest request,
                                                                    java.io.OutputStream outputStream)
        Invokes a request and returns the response future.
        Parameters:
        request - request data.
        outputStream - response output stream.
        Returns:
        response future.
      • handle

        public void handle​(ContainerRequest request)
        The main request/response processing entry point for Jersey container implementations.

        The method invokes the request processing of the provided container request context and uses the container response writer to suspend & resume the processing as well as write the response back to the container.

        The the security context stored in the container request context is bound as an injectable instance in the scope of the processed request context. Also, any custom scope injections are initialized in the current request scope.

        Parameters:
        request - container request context of the current request.
      • getConfiguration

        public ResourceConfig getConfiguration()
        Get the application configuration.
        Returns:
        application configuration.