org.mortbay.jetty.handler
Class ContextHandler

java.lang.Object
  extended by org.mortbay.component.AbstractLifeCycle
      extended by org.mortbay.jetty.handler.AbstractHandler
          extended by org.mortbay.jetty.handler.AbstractHandlerContainer
              extended by org.mortbay.jetty.handler.HandlerWrapper
                  extended by org.mortbay.jetty.handler.ContextHandler
All Implemented Interfaces:
LifeCycle, Handler, HandlerContainer, Server.Graceful, Attributes
Direct Known Subclasses:
Context, MovedContextHandler

public class ContextHandler
extends HandlerWrapper
implements Attributes, Server.Graceful

ContextHandler. This handler wraps a call to handle by setting the context and servlet path, plus setting the context classloader. Note. Because of http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4425695 directly replacing war or jar files in a context is not supported. You should use classes instead of jars if they will change, or deploy a packed war file that gets extracted on deployment.

Author:
gregw

Nested Class Summary
 class ContextHandler.SContext
          Context.
 
Field Summary
protected  ContextHandler.SContext _scontext
           
 
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
  ContextHandler()
           
protected ContextHandler(ContextHandler.SContext context)
           
  ContextHandler(HandlerContainer parent, String contextPath)
           
  ContextHandler(String contextPath)
           
 
Method Summary
 void addEventListener(EventListener listener)
           
 void addLocaleEncoding(String locale, String encoding)
           
 void clearAttributes()
           
protected  void doStart()
           
protected  void doStop()
           
 boolean getAllowNullPathInfo()
           
 Object getAttribute(String name)
           
 Enumeration getAttributeNames()
           
 Attributes getAttributes()
           
 Resource getBaseResource()
           
 ClassLoader getClassLoader()
           
 String getClassPath()
          Make best effort to extract a file classpath from the context classloader
 String[] getConnectorNames()
           
 String getContextPath()
           
static ContextHandler.SContext getCurrentContext()
          Get the current ServletContext implementation.
 String getDisplayName()
           
 ErrorHandler getErrorHandler()
           
 EventListener[] getEventListeners()
           
 String[] getHosts()
          Deprecated.  
 String getInitParameter(String name)
           
 Enumeration getInitParameterNames()
           
 Map getInitParams()
           
 String getLocaleEncoding(Locale locale)
          Get the character encoding for a locale.
 int getMaxFormContentSize()
           
 MimeTypes getMimeTypes()
           
 Resource getResource(String path)
           
 String getResourceBase()
           
 Set getResourcePaths(String path)
           
 ContextHandler.SContext getServletContext()
           
 String[] getVirtualHosts()
          Get the virtual hosts for the context.
 String[] getWelcomeFiles()
           
 void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch)
          Handle a request.
protected  boolean isProtectedTarget(String target)
          Check the target.
 boolean isShutdown()
           
 Class loadClass(String className)
           
 void removeAttribute(String name)
           
 void setAllowNullPathInfo(boolean allowNullPathInfo)
           
 void setAttribute(String name, Object value)
           
 void setAttributes(Attributes attributes)
           
 void setBaseResource(Resource base)
           
 void setClassLoader(ClassLoader classLoader)
           
 void setConnectorNames(String[] connectors)
          Set the names of accepted connectors.
 void setContextPath(String contextPath)
           
 void setDisplayName(String servletContextName)
           
 void setErrorHandler(ErrorHandler errorHandler)
           
 void setEventListeners(EventListener[] eventListeners)
           
 void setHosts(String[] hosts)
          Deprecated. use setConnectorNames(String[])
 void setInitParams(Map initParams)
           
 void setMaxFormContentSize(int maxSize)
           
 void setMimeTypes(MimeTypes mimeTypes)
           
 void setResourceBase(String resourceBase)
           
 void setServer(Server server)
           
 void setShutdown(boolean shutdown)
          Set shutdown status.
 void setVirtualHosts(String[] vhosts)
          Set the virtual hosts for the context.
 void setWelcomeFiles(String[] files)
           
protected  void startContext()
           
 String toString()
           
 
Methods inherited from class org.mortbay.jetty.handler.HandlerWrapper
addHandler, expandChildren, getHandler, setHandler
 
Methods inherited from class org.mortbay.jetty.handler.AbstractHandlerContainer
expandHandler, getChildHandlerByClass, getChildHandlers, getChildHandlersByClass
 
Methods inherited from class org.mortbay.jetty.handler.AbstractHandler
destroy, getServer
 
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

_scontext

protected ContextHandler.SContext _scontext
Constructor Detail

ContextHandler

public ContextHandler()

ContextHandler

protected ContextHandler(ContextHandler.SContext context)

ContextHandler

public ContextHandler(String contextPath)

ContextHandler

public ContextHandler(HandlerContainer parent,
                      String contextPath)
Method Detail

getCurrentContext

public static ContextHandler.SContext getCurrentContext()
Get the current ServletContext implementation. This call is only valid during a call to doStart and is available to nested handlers to access the context.

Returns:
ServletContext implementation

getServletContext

public ContextHandler.SContext getServletContext()

getAllowNullPathInfo

public boolean getAllowNullPathInfo()
Returns:
the allowNullPathInfo true if /context is not redirected to /context/

setAllowNullPathInfo

public void setAllowNullPathInfo(boolean allowNullPathInfo)
Parameters:
allowNullPathInfo - true if /context is not redirected to /context/

setServer

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

setVirtualHosts

public void setVirtualHosts(String[] vhosts)
Set the virtual hosts for the context. Only requests that have a matching host header or fully qualified URL will be passed to that context with a virtual host name. A context with no virtual host names or a null virtual host name is available to all requests that are not served by a context with a matching virtual host name.

Parameters:
vhosts - Array of virtual hosts that this context responds to. A null host name or null/empty array means any hostname is acceptable. Host names may String representation of IP addresses.

getVirtualHosts

public String[] getVirtualHosts()
Get the virtual hosts for the context. Only requests that have a matching host header or fully qualified URL will be passed to that context with a virtual host name. A context with no virtual host names or a null virtual host name is available to all requests that are not served by a context with a matching virtual host name.

Returns:
Array of virtual hosts that this context responds to. A null host name or empty array means any hostname is acceptable. Host names may be String representation of IP addresses.

setHosts

public void setHosts(String[] hosts)
Deprecated. use setConnectorNames(String[])


getHosts

public String[] getHosts()
Deprecated. 

Get the hosts for the context.


getConnectorNames

public String[] getConnectorNames()
Returns:
an array of connector names that this context will accept a request from.

setConnectorNames

public void setConnectorNames(String[] connectors)
Set the names of accepted connectors. Names are either "host:port" or a specific configured name for a connector.

Parameters:
connectors - If non null, an array of connector names that this context will accept a request from.

getAttribute

public Object getAttribute(String name)
Specified by:
getAttribute in interface Attributes

getAttributeNames

public Enumeration getAttributeNames()
Specified by:
getAttributeNames in interface Attributes

getAttributes

public Attributes getAttributes()
Returns:
Returns the attributes.

getClassLoader

public ClassLoader getClassLoader()
Returns:
Returns the classLoader.

getClassPath

public String getClassPath()
Make best effort to extract a file classpath from the context classloader

Returns:
Returns the classLoader.

getContextPath

public String getContextPath()
Returns:
Returns the _contextPath.

getInitParameter

public String getInitParameter(String name)

getInitParameterNames

public Enumeration getInitParameterNames()

getInitParams

public Map getInitParams()
Returns:
Returns the initParams.

getDisplayName

public String getDisplayName()

getEventListeners

public EventListener[] getEventListeners()

setEventListeners

public void setEventListeners(EventListener[] eventListeners)

addEventListener

public void addEventListener(EventListener listener)

isShutdown

public boolean isShutdown()
Returns:
true if this context is accepting new requests

setShutdown

public void setShutdown(boolean shutdown)
Set shutdown status. This field allows for graceful shutdown of a context. A started context may be put into non accepting state so that existing requests can complete, but no new requests are accepted.

Specified by:
setShutdown in interface Server.Graceful
Parameters:
accepting - true if this context is accepting new requests

doStart

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

startContext

protected void startContext()
                     throws Exception
Throws:
Exception

doStop

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

handle

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

Specified by:
handle in interface Handler
Overrides:
handle in class HandlerWrapper
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.
dispatch - The dispatch mode: Handler.REQUEST, Handler.FORWARD, Handler.INCLUDE, Handler.ERROR
Throws:
IOException
ServletException

isProtectedTarget

protected boolean isProtectedTarget(String target)
Check the target. Called by handle(String, HttpServletRequest, HttpServletResponse, int) when a target within a context is determined. If the target is protected, 404 is returned. The default implementation always returns false.

See Also:
WebAppContext.isProtectedTarget(String)

removeAttribute

public void removeAttribute(String name)
Specified by:
removeAttribute in interface Attributes

setAttribute

public void setAttribute(String name,
                         Object value)
Specified by:
setAttribute in interface Attributes

setAttributes

public void setAttributes(Attributes attributes)
Parameters:
attributes - The attributes to set.

clearAttributes

public void clearAttributes()
Specified by:
clearAttributes in interface Attributes

setClassLoader

public void setClassLoader(ClassLoader classLoader)
Parameters:
classLoader - The classLoader to set.

setContextPath

public void setContextPath(String contextPath)
Parameters:
contextPath - The _contextPath to set.

setInitParams

public void setInitParams(Map initParams)
Parameters:
initParams - The initParams to set.

setDisplayName

public void setDisplayName(String servletContextName)
Parameters:
servletContextName - The servletContextName to set.

getBaseResource

public Resource getBaseResource()
Returns:
Returns the resourceBase.

getResourceBase

public String getResourceBase()
Returns:
Returns the base resource as a string.

setBaseResource

public void setBaseResource(Resource base)
Parameters:
base - The resourceBase to set.

setResourceBase

public void setResourceBase(String resourceBase)
Parameters:
resourceBase - The base resource as a string.

getMimeTypes

public MimeTypes getMimeTypes()
Returns:
Returns the mimeTypes.

setMimeTypes

public void setMimeTypes(MimeTypes mimeTypes)
Parameters:
mimeTypes - The mimeTypes to set.

setWelcomeFiles

public void setWelcomeFiles(String[] files)

getWelcomeFiles

public String[] getWelcomeFiles()
Returns:
The names of the files which the server should consider to be welcome files in this context.
See Also:
The Servlet Specification, setWelcomeFiles(java.lang.String[])

getErrorHandler

public ErrorHandler getErrorHandler()
Returns:
Returns the errorHandler.

setErrorHandler

public void setErrorHandler(ErrorHandler errorHandler)
Parameters:
errorHandler - The errorHandler to set.

getMaxFormContentSize

public int getMaxFormContentSize()

setMaxFormContentSize

public void setMaxFormContentSize(int maxSize)

toString

public String toString()
Overrides:
toString in class AbstractHandler

loadClass

public Class loadClass(String className)
                throws ClassNotFoundException
Throws:
ClassNotFoundException

addLocaleEncoding

public void addLocaleEncoding(String locale,
                              String encoding)

getLocaleEncoding

public String getLocaleEncoding(Locale locale)
Get the character encoding for a locale. The full locale name is first looked up in the map of encodings. If no encoding is found, then the locale language is looked up.

Parameters:
locale - a Locale value
Returns:
a String representing the character encoding for the locale or null if none found.

getResource

public Resource getResource(String path)
                     throws MalformedURLException
Throws:
MalformedURLException

getResourcePaths

public Set getResourcePaths(String path)