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 ecapsulated by a Servlet or Filter implementaton.
WebComponent.ContextInjectableProvider<T> A helper class for creating an injectable provider that supports Context with a type and constant value.
 

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 © 2010 Oracle Corporation. All Rights Reserved.