## Package com.sun.jersey.spi.container.servlet

Provides support for servlet-based and filter-based Web applications.

See:
Description

Interface Summary
WebConfig: The Web configuration for accessing initialization parameters of a Web component and the `ServletContext`.

Class Summary
ServletContainer: A `Servlet` or `Filter` for deploying root resource classes.
ServletContainer.ContextInjectableProvider<T>: A helper class for creating an injectable provider that supports `Context` with a type and constant value.
WebComponent: An abstract Web component that may be extended a Servlet and/or Filter implementation, or encapsulated by a Servlet or Filter implementation.
WebComponent.ContextInjectableProvider<T>: A helper class for creating an injectable provider that supports `Context` with a type and constant value.
WebFilterConfig: A filter based web config.
WebServletConfig: A servlet based web config.

Enum Summary
WebConfig.ConfigType: The web configuration type.

Annotation Types Summary
PerSession: Used to annotate resource classes that require a new instance for each HTTP servlet session.

## Package com.sun.jersey.spi.container.servlet Description

Provides support for servlet-based and filter-based Web applications.

Web application support is enabled by referencing the servlet `ServletContainer` in the web.xml.

For example, the following will deploy Jersey and automatically register any root resource or provider classes present in the directory "/WEB-INF/classes" or jar files present in the directory "/WEB-INF/lib":

>        <web-app>
>          <servlet>
>            <servlet-name>Jersey Web Application</servlet-name>
>            <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
>          </servlet>
>          <servlet-mapping>
>            <servlet-name>Jersey Web Application</servlet-name>
>            <url-pattern>/*</url-pattern>
>          </servlet-mapping>
>        </web-app>

A deployment approach, that is more portable with respect to maven and application servers, is to declare the package names where root resource and provider classes reside. For example, the following will deploy Jersey and automatically register any root resource or provider classes present in the package "managed", or any sub-packages.

>        <web-app>
>          <servlet>
>            <servlet-name>Jersey Web Application</servlet-name>
>            <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
>            <init-param>
>                <param-name>com.sun.jersey.config.property.packages</param-name>
>                <param-value>managed</param-value>
>            </init-param>
>          </servlet>
>          <servlet-mapping>
>            <servlet-name>Jersey Web Application</servlet-name>
>            <url-pattern>/*</url-pattern>
>          </servlet-mapping>
>        </web-app>

The deployment approach that is portable accross JAX-RS implementations is to register an implementation of `Application`. For example given an implementation as follows:

>        package com.foo;

>        import ...

>        public class MyApplicaton extends Application {
>            public Set<Class<?>> getClasses() {
>                Set<Class<?>> s = new HashSet<Class<?>>();
>                s.add(HelloWorldResource.class);
>                return s;
>            }
>        }

then that implementation can be registered as follows:

>        <web-app>
>          <servlet>
>            <servlet-name>Jersey Web Application</servlet-name>
>            <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
>            <init-param>
>                <param-name>javax.ws.rs.Application</param-name>
>                <param-value>com.foo.MyApplication</param-value>
>            </init-param>
>          </servlet>
>          <servlet-mapping>
>            <servlet-name>Jersey Web Application</servlet-name>
>            <url-pattern>/*</url-pattern>
>          </servlet-mapping>
>        </web-app>

It is possible to combine package-based registration and `Application` registered by extending `PackagesResourceConfig` and registering the extended class, for example:

>        public class MyApplication extends PackagesResourceConfig {
>            public MyApplication() {
>                super("org.foo.rest;org.bar.rest");
>            }
>        }

The above examples apply to Servlet-based configurations but they equally applicable to Filter-based configurations. For example, the following presents the same package-based configuration as above but utilizing a filter:

>        <web-app>
>          <filter>
>            <filter-name>Jersey Web Application</filter-name>
>            <filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
>            <init-param>
>                <param-name>com.sun.jersey.config.property.packages</param-name>
>                <param-value>managed</param-value>
>            </init-param>
>          </filter>
>          <filter-mapping>
>            <filter-name>Jersey Web Application</filter-name>
>            <url-pattern>/*</url-pattern>
>          </filter-mapping>
>        </web-app>

Copyright © 2017 Oracle Corporation. All Rights Reserved.