org.mortbay.jetty.servlet
Class ServletHandler

java.lang.Object
  extended by org.mortbay.component.AbstractLifeCycle
      extended by org.mortbay.jetty.handler.AbstractHandler
          extended by org.mortbay.jetty.servlet.ServletHandler
All Implemented Interfaces:
LifeCycle, Handler

public class ServletHandler
extends AbstractHandler

Servlet HttpHandler. This handler maps requests to servlets that implement the javax.servlet.http.HttpServlet API.

This handler does not implement the full J2EE features and is intended to be used when a full web application is not required. Specifically filters and request wrapping are not supported. Unless run as part of a Context or derivative, the initialize() method must be called manually after start().

Author:
Greg Wilkins
See Also:
WebAppContext

Field Summary
static String __DEFAULT_SERVLET
           
static String __J_S_CONTEXT_TEMPDIR
           
static String __J_S_ERROR_EXCEPTION
           
static String __J_S_ERROR_EXCEPTION_TYPE
           
static String __J_S_ERROR_MESSAGE
           
static String __J_S_ERROR_REQUEST_URI
           
static String __J_S_ERROR_SERVLET_NAME
           
static String __J_S_ERROR_STATUS_CODE
           
protected  HashMap[] _chainCache
           
protected  HashMap[] _namedChainCache
           
 
Fields inherited from class org.mortbay.jetty.handler.AbstractHandler
_string
 
Fields inherited from interface org.mortbay.jetty.Handler
ALL, DEFAULT, ERROR, FORWARD, INCLUDE, REQUEST
 
Constructor Summary
ServletHandler()
          Constructor.
 
Method Summary
 void addFilter(FilterHolder filter)
          Convenience method to add a preconstructed FilterHolder
 void addFilter(FilterHolder filter, FilterMapping filterMapping)
          convenience method to add a filter and mapping
 FilterHolder addFilter(String className, String pathSpec, int dispatches)
          Deprecated.  
 void addFilterMapping(FilterMapping mapping)
          Convenience method to add a preconstructed FilterMapping
 FilterHolder addFilterWithMapping(Class filter, String pathSpec, int dispatches)
          conveniance method to add a filter.
 void addFilterWithMapping(FilterHolder holder, String pathSpec, int dispatches)
          conveniance method to add a filter.
 FilterHolder addFilterWithMapping(String className, String pathSpec, int dispatches)
          conveniance method to add a filter.
 void addServlet(ServletHolder holder)
          Convenience method to add a pre-constructed ServletHolder.
 ServletHolder addServlet(String className, String pathSpec)
          Deprecated.  
 void addServletMapping(ServletMapping mapping)
          Convenience method to add a pre-constructed ServletMapping.
 ServletHolder addServletWithMapping(Class servlet, String pathSpec)
          conveniance method to add a servlet.
 void addServletWithMapping(ServletHolder servlet, String pathSpec)
          conveniance method to add a servlet.
 ServletHolder addServletWithMapping(String className, String pathSpec)
          conveniance method to add a servlet.
 Filter customizeFilter(Filter filter)
          Customize a Filter.
 Filter customizeFilterDestroy(Filter filter)
           
 Servlet customizeServlet(Servlet servlet)
          Customize a servlet.
 Servlet customizeServletDestroy(Servlet servlet)
           
protected  void doStart()
           
protected  void doStop()
           
 Object getContextLog()
           
 FilterHolder getFilter(String name)
           
 FilterMapping[] getFilterMappings()
           
 FilterHolder[] getFilters()
          Get Filters.
 PathMap.Entry getHolderEntry(String pathInContext)
          ServletHolder matching path.
 int getMaxFilterChainsCacheSize()
           
 RequestDispatcher getRequestDispatcher(String uriInContext)
           
 ServletHolder getServlet(String name)
           
 ServletContext getServletContext()
           
 ServletMapping[] getServletMappings()
           
 ServletHolder[] getServlets()
          Get Servlets.
 void handle(String target, HttpServletRequest request, HttpServletResponse response, int type)
          Handle a request.
 void initialize()
          Initialize filters and load-on-startup servlets.
 boolean isAvailable()
           
 boolean isFilterChainsCached()
           
 boolean isInitializeAtStart()
          Deprecated.  
 FilterHolder newFilterHolder()
           
 FilterHolder newFilterHolder(Class filter)
           
 ServletHolder newServletHolder()
           
 ServletHolder newServletHolder(Class servlet)
           
protected  void notFound(HttpServletRequest request, HttpServletResponse response)
           
 void setFilterChainsCached(boolean filterChainsCached)
           
 void setFilterMappings(FilterMapping[] filterMappings)
           
 void setFilters(FilterHolder[] holders)
           
 void setInitializeAtStart(boolean initializeAtStart)
          Deprecated.  
 void setMaxFilterChainsCacheSize(int maxFilterChainsCacheSize)
          Set the maximum filter chain cache size.
 void setServer(Server server)
           
 void setServletMappings(ServletMapping[] servletMappings)
           
 void setServlets(ServletHolder[] holders)
          Set Servlets.
protected  void updateMappings()
           
protected  void updateNameMappings()
           
 
Methods inherited from class org.mortbay.jetty.handler.AbstractHandler
destroy, getServer, toString
 
Methods inherited from class org.mortbay.component.AbstractLifeCycle
isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, start, stop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.mortbay.component.LifeCycle
isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, start, stop
 

Field Detail

__DEFAULT_SERVLET

public static final String __DEFAULT_SERVLET
See Also:
Constant Field Values

__J_S_CONTEXT_TEMPDIR

public static final String __J_S_CONTEXT_TEMPDIR
See Also:
Constant Field Values

__J_S_ERROR_EXCEPTION

public static final String __J_S_ERROR_EXCEPTION
See Also:
Constant Field Values

__J_S_ERROR_EXCEPTION_TYPE

public static final String __J_S_ERROR_EXCEPTION_TYPE
See Also:
Constant Field Values

__J_S_ERROR_MESSAGE

public static final String __J_S_ERROR_MESSAGE
See Also:
Constant Field Values

__J_S_ERROR_REQUEST_URI

public static final String __J_S_ERROR_REQUEST_URI
See Also:
Constant Field Values

__J_S_ERROR_SERVLET_NAME

public static final String __J_S_ERROR_SERVLET_NAME
See Also:
Constant Field Values

__J_S_ERROR_STATUS_CODE

public static final String __J_S_ERROR_STATUS_CODE
See Also:
Constant Field Values

_chainCache

protected transient HashMap[] _chainCache

_namedChainCache

protected transient HashMap[] _namedChainCache
Constructor Detail

ServletHandler

public ServletHandler()
Constructor.

Method Detail

setServer

public void setServer(Server server)
Specified by:
setServer in interface Handler
Overrides:
setServer in class AbstractHandler

doStart

protected void doStart()
                throws Exception
Overrides:
doStart in class AbstractHandler
Throws:
Exception

doStop

protected void doStop()
               throws Exception
Overrides:
doStop in class AbstractHandler
Throws:
Exception

getContextLog

public Object getContextLog()
Returns:
Returns the contextLog.

getFilterMappings

public FilterMapping[] getFilterMappings()
Returns:
Returns the filterMappings.

getFilters

public FilterHolder[] getFilters()
Get Filters.

Returns:
Array of defined servlets

getHolderEntry

public PathMap.Entry getHolderEntry(String pathInContext)
ServletHolder matching path.

Parameters:
pathInContext - Path within _context.
Returns:
PathMap Entries pathspec to ServletHolder

getRequestDispatcher

public RequestDispatcher getRequestDispatcher(String uriInContext)
Returns:
A dispatcher wrapping the resource at uriInContext, or null if the specified uri cannot be dispatched to.

getServletContext

public ServletContext getServletContext()

getServletMappings

public ServletMapping[] getServletMappings()
Returns:
Returns the servletMappings.

getServlets

public ServletHolder[] getServlets()
Get Servlets.

Returns:
Array of defined servlets

getServlet

public ServletHolder getServlet(String name)

handle

public void handle(String target,
                   HttpServletRequest request,
                   HttpServletResponse response,
                   int type)
            throws IOException,
                   ServletException
Description copied from interface: Handler
Handle a request.

Parameters:
target - The target of the request - either a URI or a name.
request - The request either as the Request object or a wrapper of that request. The HttpConnection.getCurrentConnection() method can be used access the Request object if required.
response - The response as the Response object or a wrapper of that request. The HttpConnection.getCurrentConnection() method can be used access the Response object if required.
type - The dispatch mode: Handler.REQUEST, Handler.FORWARD, Handler.INCLUDE, Handler.ERROR
Throws:
IOException
ServletException

isInitializeAtStart

public boolean isInitializeAtStart()
Deprecated. 

Returns:
Returns the initializeAtStart.

setInitializeAtStart

public void setInitializeAtStart(boolean initializeAtStart)
Deprecated. 

Parameters:
initializeAtStart - The initializeAtStart to set.

isAvailable

public boolean isAvailable()
Returns:
true if the handler is started and there are no unavailable servlets

initialize

public void initialize()
                throws Exception
Initialize filters and load-on-startup servlets. Called automatically from start if autoInitializeServlet is true.

Throws:
Exception

isFilterChainsCached

public boolean isFilterChainsCached()
Returns:
Returns the filterChainsCached.

newServletHolder

public ServletHolder newServletHolder()
See Also:
newServletHolder(Class)

newServletHolder

public ServletHolder newServletHolder(Class servlet)

addServletWithMapping

public ServletHolder addServletWithMapping(String className,
                                           String pathSpec)
conveniance method to add a servlet.

Returns:
The servlet holder.

addServletWithMapping

public ServletHolder addServletWithMapping(Class servlet,
                                           String pathSpec)
conveniance method to add a servlet.

Returns:
The servlet holder.

addServletWithMapping

public void addServletWithMapping(ServletHolder servlet,
                                  String pathSpec)
conveniance method to add a servlet.

Parameters:
name -
className -
pathSpec -

addServlet

public ServletHolder addServlet(String className,
                                String pathSpec)
Deprecated. 

Convenience method to add a servlet with a servlet mapping.

Parameters:
className -
pathSpec -
Returns:

addServlet

public void addServlet(ServletHolder holder)
Convenience method to add a pre-constructed ServletHolder.

Parameters:
holder -

addServletMapping

public void addServletMapping(ServletMapping mapping)
Convenience method to add a pre-constructed ServletMapping.

Parameters:
mapping -

newFilterHolder

public FilterHolder newFilterHolder(Class filter)

newFilterHolder

public FilterHolder newFilterHolder()
See Also:
#newFilterHolder(Class)}

getFilter

public FilterHolder getFilter(String name)

addFilterWithMapping

public FilterHolder addFilterWithMapping(Class filter,
                                         String pathSpec,
                                         int dispatches)
conveniance method to add a filter.

Parameters:
name -
className -
pathSpec -
dispatches - see FilterMapping.setDispatches(int)
Returns:
The filter holder.

addFilterWithMapping

public FilterHolder addFilterWithMapping(String className,
                                         String pathSpec,
                                         int dispatches)
conveniance method to add a filter.

Parameters:
name -
className -
pathSpec -
dispatches - see FilterMapping.setDispatches(int)
Returns:
The filter holder.

addFilterWithMapping

public void addFilterWithMapping(FilterHolder holder,
                                 String pathSpec,
                                 int dispatches)
conveniance method to add a filter.

Parameters:
name -
className -
pathSpec -
dispatches - see FilterMapping.setDispatches(int)

addFilter

public FilterHolder addFilter(String className,
                              String pathSpec,
                              int dispatches)
Deprecated. 

Convenience method to add a filter with a mapping

Parameters:
className -
pathSpec -
dispatches -
Returns:

addFilter

public void addFilter(FilterHolder filter,
                      FilterMapping filterMapping)
convenience method to add a filter and mapping

Parameters:
filter -
filterMapping -

addFilter

public void addFilter(FilterHolder filter)
Convenience method to add a preconstructed FilterHolder

Parameters:
filter -

addFilterMapping

public void addFilterMapping(FilterMapping mapping)
Convenience method to add a preconstructed FilterMapping

Parameters:
mapping -

updateNameMappings

protected void updateNameMappings()

updateMappings

protected void updateMappings()

notFound

protected void notFound(HttpServletRequest request,
                        HttpServletResponse response)
                 throws IOException
Throws:
IOException

setFilterChainsCached

public void setFilterChainsCached(boolean filterChainsCached)
Parameters:
filterChainsCached - The filterChainsCached to set.

setFilterMappings

public void setFilterMappings(FilterMapping[] filterMappings)
Parameters:
filterMappings - The filterMappings to set.

setFilters

public void setFilters(FilterHolder[] holders)

setServletMappings

public void setServletMappings(ServletMapping[] servletMappings)
Parameters:
servletMappings - The servletMappings to set.

setServlets

public void setServlets(ServletHolder[] holders)
Set Servlets.

Parameters:
holders - Array of servletsto define

getMaxFilterChainsCacheSize

public int getMaxFilterChainsCacheSize()
Returns:
The maximum entries in a filter chain cache.

setMaxFilterChainsCacheSize

public void setMaxFilterChainsCacheSize(int maxFilterChainsCacheSize)
Set the maximum filter chain cache size. Filter chains are cached if isFilterChainsCached() is true. If the max cache size is greater than zero, then the cache is flushed whenever it grows to be this size.

Parameters:
maxFilterChainsCacheSize - the maximum number of entries in a filter chain cache.

customizeServlet

public Servlet customizeServlet(Servlet servlet)
                         throws Exception
Customize a servlet. Called before the servlet goes into service. Subclasses of ServletHandler should override this method.

Parameters:
servlet -
Returns:
Throws:
Exception

customizeServletDestroy

public Servlet customizeServletDestroy(Servlet servlet)
                                throws Exception
Throws:
Exception

customizeFilter

public Filter customizeFilter(Filter filter)
                       throws Exception
Customize a Filter. Called before the Filter goes into service. Subclasses of ServletHandler should override this method.

Parameters:
filter -
Returns:
Throws:
Exception

customizeFilterDestroy

public Filter customizeFilterDestroy(Filter filter)
                              throws Exception
Throws:
Exception