com.sun.jersey.spi.container.servlet
Class ServletContainer

java.lang.Object
  extended by HttpServlet
      extended by com.sun.jersey.spi.container.servlet.ServletContainer
All Implemented Interfaces:
ContainerListener

public class ServletContainer
extends HttpServlet
implements ContainerListener

A servlet container for deploying root resource classes.

The web.xml MAY configure the servlet to have an initialization parameter "com.sun.jersey.config.property.resourceConfigClass" and whose value is a fully qualified name of a class that implements ResourceConfig. If the concrete class has a constructor that takes a single parameter of the type Map then the class is instantiated with that constructor and an instance of Map that contains all the initialization parameters is passed as the parameter. Otherwise the default contructor is used to instantate the class.

If the initialization parameter "com.sun.jersey.config.property.resourceConfigClass" is not present and a initialization parameter "com.sun.jersey.config.property.packages" is present (see PackagesResourceConfig.PROPERTY_PACKAGES) a new instance of PackagesResourceConfig is created. The initialization parameter "com.sun.jersey.config.property.packages" MUST be set to provide one or more package names. Each package name MUST be separated by ';'. The package names are added as a property value to a Map instance using the property name (@link PackagesResourceConfig#PROPERTY_PACKAGES}. Any additional initialization parameters are then added to the Map instance. Then that Map instance is passed to the constructor of PackagesResourceConfig.

If none of the above initialization parameters are present a new instance of ClasspathResourceConfig is created. The initialization parameter "com.sun.jersey.config.property.classpath" MAY be set to provide one or more paths. Each path MUST be separated by ';'. Each path MUST be a virtual path as specified by the ServletContext#getRealPath method, and each path is transformed by that method. The transformed paths are added as a property value to a Map instance using the property name (@link ClasspathResourceConfig.PROPERTY_CLASSPATH}. Any additional initialization parameters are then added to the Map instance. Then that Map instance is passed to the constructor of ClasspathResourceConfig. If this parameter is not set then the default value is set to the following virtual paths: "/WEB-INF/lib;/WEB-INF/classes".

A new WebApplication instance will be created and configured such that the following classes may be injected onto the field of a root resource class or a parameter of a method of root resource class that is annotated with Context: HttpServletRequest, HttpServletResponse, ServletContext, and ServletConfig.

A ComponentProvider instance may be registered by extending this class and overriding the method initiate(ResourceConfig, WebApplication) to initiate the WebApplication with the ComponentProvider instance.


Field Summary
static java.lang.String APPLICATION_CONFIG_CLASS
           
static java.lang.String RESOURCE_CONFIG_CLASS
           
 
Constructor Summary
ServletContainer()
           
 
Method Summary
protected  void configure(ServletConfig sc, ResourceConfig rc, WebApplication wa)
          Configure the WebApplication.
protected  WebApplication create()
          Create a new instance of a WebApplication.
 void init(ServletConfig servletConfig)
           
protected  void initiate(ResourceConfig rc, WebApplication wa)
          Initiate the WebApplication.
 void load()
          Load the Web application.
 void onReload()
          Called when reloading of the container is requested.
 void service(HttpServletRequest request, HttpServletResponse response)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

APPLICATION_CONFIG_CLASS

public static final java.lang.String APPLICATION_CONFIG_CLASS
See Also:
Constant Field Values

RESOURCE_CONFIG_CLASS

public static final java.lang.String RESOURCE_CONFIG_CLASS
See Also:
Constant Field Values
Constructor Detail

ServletContainer

public ServletContainer()
Method Detail

init

public final void init(ServletConfig servletConfig)
                throws ServletException
Throws:
ServletException

service

public void service(HttpServletRequest request,
                    HttpServletResponse response)
             throws ServletException,
                    java.io.IOException
Throws:
ServletException
java.io.IOException

load

public final void load()
Load the Web application. This will create, configure and initiate the web application.

This method may be called at runtime, more than once, to reload the Web application. For example, if a ResourceConfig implementation is capable of detecting changes to resource classes (addition or removal) or providers then this method may be invoked to reload the web application for such changes to take effect.

If this method is called when there are pending requests then such requests will be processed using the previously loaded web application.


create

protected WebApplication create()
Create a new instance of a WebApplication.

Returns:
the WebApplication instance.

configure

protected void configure(ServletConfig sc,
                         ResourceConfig rc,
                         WebApplication wa)
Configure the WebApplication.

The WebApplication is configured such that the following classes may be injected onto the field of a root resource class or a parameter of a method of root resource class that is annotated with Context: HttpServletRequest, HttpServletResponse , ServletContext, and ServletConfig.

An inheriting class may override this method to configure the WebApplication to provide alternative or additional instances that are resource or provider classes or instances, and may modify the features and properties of the ResourceConfig. For an inheriting class to extend configuration behaviour the overriding method MUST call super.configure(servletConfig, rc, wa) as the first statement of that method.

Parameters:
sc - the Servlet configuration
rc - the Resource configuration
wa - the Web application

initiate

protected void initiate(ResourceConfig rc,
                        WebApplication wa)
Initiate the WebApplication.

Any root resource class in registered in the resource configuration that is an interface is processed as follows. If the class is an interface and there exists a JNDI named object with the fully qualified class name as the JNDI name then that named object is added as a singleton root resource and the class is removed from the set of root resource classes.

Parameters:
rc - the Resource configuration
wa - the Web application

onReload

public void onReload()
Description copied from interface: ContainerListener
Called when reloading of the container is requested.

Specified by:
onReload in interface ContainerListener


Copyright © 2008 Sun Microsystems, Inc. All Rights Reserved.