## org.mortbay.http
Class HttpContext

    java.lang.Object
      |
      +--org.mortbay.http.HttpContext

All Implemented Interfaces:
  LifeCycle, java.io.Serializable

Direct Known Subclasses:
  ServletHttpContext

public class HttpContext
extends java.lang.Object
implements LifeCycle, java.io.Serializable

Context for a collection of HttpHandlers. HTTP Context provides an ordered container for HttpHandlers that share the same path prefix, filebase, resourcebase and/or classpath.

A HttpContext is analagous to a ServletContext in the Servlet API, except that it may contain other types of handler other than servlets.

A ClassLoader is created for the context and it uses Thread.currentThread().getContextClassLoader(); as it's parent loader. The class loader is initialized during start(), when a derived context calls initClassLoader() or on the first call to loadClass()

Note. that order is important when configuring a HttpContext. For example, if resource serving is enabled before servlets, then resources take priority.

Version:
  $Id: HttpContext.java,v 1.87.2.8 2004/04/05 22:06:29 gregwilkins Exp $
Author:
  Greg Wilkins (gregw)
See Also:
  `HttpServer`, `HttpHandler`, `ServletHttpContext`, Serialized Form

Nested Class Summary
`class` `HttpContext.ResourceMetaData` MetaData associated with a context Resource.

Field Summary
`static java.lang.String` `__fileClassPathAttr` File class path attribute.

Constructor Summary
`HttpContext()` Constructor.
`HttpContext(HttpServer httpServer, java.lang.String contextPathSpec)` Constructor.

Method Summary
`void` `addHandler(HttpHandler handler)` Add a HttpHandler to the context.
`void` `addHandler(int i, HttpHandler handler)` Add a handler.
`void` `addPermission(java.security.Permission permission)` Add a permission to this context.
`void` `addSecurityConstraint(java.lang.String pathSpec, SecurityConstraint sc)`
`void` `addVirtualHost(java.lang.String hostname)` Add a virtual host alias to this context.
`void` `addWelcomeFile(java.lang.String welcomeFile)`
`static java.lang.String` `canonicalContextPathSpec(java.lang.String contextPathSpec)`
`boolean` `checkSecurityConstraints(java.lang.String pathInContext, HttpRequest request, HttpResponse response)`
`void` `clearSecurityConstraints()`
`void` `destroy()` Destroy a context.
`void` `flushCache()`
`java.lang.Object` `getAttribute(java.lang.String name)`
`java.util.Enumeration` `getAttributeNames()`
`java.util.Map` `getAttributes()`
`SecurityConstraint.Authenticator` `getAuthenticator()`
`Resource` `getBaseResource()` Get the base resource.
`java.lang.ClassLoader` `getClassLoader()` Get the classloader.
`java.lang.String` `getClassPath()` Get the context classpath.
`java.lang.String` `getContextPath()`
`java.lang.String` `getEncodingByMimeType(java.lang.String type)` Get char encoding by mime type.
`java.util.Map` `getEncodingMap()` Get the map of mime type to char encoding.
`java.lang.String` `getErrorPage(java.lang.String error)` get error page URI.
`java.lang.String` `getFileClassPath()` Get the file classpath of the context.
`HttpHandler` `getHandler(java.lang.Class handlerClass)` Get a handler by class.
`int` `getHandlerIndex(HttpHandler handler)` Get handler index.
`HttpHandler[]` `getHandlers()` Get all handlers.
`java.lang.String[]` `getHosts()` Get the hosts for the context.
`HttpConnection` `getHttpConnection()` Get the ThreadLocal HttpConnection.
`java.lang.String` `getHttpContextName()`
`HttpServer` `getHttpServer()`
`java.lang.String` `getInitParameter(java.lang.String param)` Get context init parameter.
`java.util.Enumeration` `getInitParameterNames()` Get context init parameter.
`int` `getMaxCachedFileSize()`
`int` `getMaxCacheSize()`
`java.lang.String` `getMimeByExtension(java.lang.String filename)` Get the MIME type by filename extension.
`java.util.Map` `getMimeMap()`
`java.lang.ClassLoader` `getParentClassLoader()`
`java.security.PermissionCollection` `getPermissions()` Get the permissions to be used for this context.
`UserRealm` `getRealm()`
`java.lang.String` `getRealmName()`
`RequestLog` `getRequestLog()`
`int` `getRequests()`
`int` `getRequestsActive()`
`int` `getRequestsActiveMax()`
`Resource` `getResource(java.lang.String pathInContext)` Get a resource from the context.
`java.lang.String` `getResourceBase()` Set the Resource Base.
`HttpContext.ResourceMetaData` `getResourceMetaData(Resource resource)` Get Resource MetaData.
`int` `getResponses1xx()`
`int` `getResponses2xx()`
`int` `getResponses3xx()`
`int` `getResponses4xx()`
`int` `getResponses5xx()`
`boolean` `getStatsOn()`
`long` `getStatsOnMs()`
`java.io.File` `getTempDirectory()` Get Context temporary directory.
`java.lang.String[]` `getVirtualHosts()` Get the virtual hosts for the context.
`java.lang.String` `getWelcomeFile(Resource resource)`
`java.lang.String[]` `getWelcomeFiles()`
`boolean` `handle(HttpRequest request, HttpResponse response)` Handler request.
`boolean` `handle(java.lang.String pathInContext, java.lang.String pathParams, HttpRequest request, HttpResponse response)` Handler request.
`boolean` `isAuthConstrained()`
`boolean` `isClassLoaderJava2Compliant()` Get Java2 compliant classloading.
`boolean` `isRedirectNullPath()`
`boolean` `isStarted()`
`java.lang.Class` `loadClass(java.lang.String className)`
`void` `log(HttpRequest request, HttpResponse response, int length)` Log a request and response.
`void` `removeAttribute(java.lang.String name)`
`java.lang.String` `removeErrorPage(java.lang.String error)`
`void` `removeHandler(HttpHandler handler)` Remove a handler.
`HttpHandler` `removeHandler(int i)` Remove a handler.
`void` `removeVirtualHost(java.lang.String hostname)` remove a virtual host alias to this context.
`void` `removeWelcomeFile(java.lang.String welcomeFile)`
`void` `setAttribute(java.lang.String name, java.lang.Object value)` Set a context attribute.
`void` `setAttributes(java.util.Map attributes)`
`void` `setAuthenticator(SecurityConstraint.Authenticator authenticator)`
`void` `setBaseResource(Resource base)` Set the base resource.
`void` `setClassLoader(java.lang.ClassLoader loader)` Set ClassLoader.
`void` `setClassLoaderJava2Compliant(boolean compliant)` Set Java2 compliant classloading.
`void` `setClassPath(java.lang.String classPath)` Sets the class path for the context.
`void` `setClassPaths(Resource lib, boolean append)` Sets the class path for the context from the jar and zip files found in the specified resource.
`void` `setClassPaths(java.lang.String lib, boolean append)` Sets the class path for the context from the jar and zip files found in the specified resource.
`void` `setContextPath(java.lang.String contextPathSpec)`
`void` `setEncodingMap(java.util.Map encodingMap)` Set the map of mime type to char encoding.
`void` `setErrorPage(java.lang.String error, java.lang.String uriInContext)` set error page URI.
`void` `setHandlers(HttpHandler[] handlers)`
`void` `setHosts(java.lang.String[] hosts)` Set the hosts for the context.
`void` `setInitParameter(java.lang.String param, java.lang.String value)` Set context init parameter.
`void` `setMaxCachedFileSize(int maxCachedFileSize)`
`void` `setMaxCacheSize(int maxCacheSize)`
`void` `setMimeMap(java.util.Map mimeMap)` Also sets the org.mortbay.http.mimeMap context attribute
`void` `setMimeMapping(java.lang.String extension, java.lang.String type)` Set a mime mapping
`void` `setParentClassLoader(java.lang.ClassLoader loader)` Set Parent ClassLoader.
`void` `setPermissions(java.security.PermissionCollection permissions)` Set the permissions to be used for this context.
`void` `setRealm(UserRealm realm)` Set the realm.
`void` `setRealmName(java.lang.String realmName)` Set the realm name.
`void` `setRedirectNullPath(boolean b)` Set null path redirection.
`void` `setRequestLog(RequestLog log)` Set the request log.
`void` `setResourceBase(java.lang.String resourceBase)` Set the Resource Base.
`void` `setStatsOn(boolean on)` True set statistics recording on for this context.
`void` `setTempDirectory(java.io.File dir)` Set temporary directory for context.
`void` `setTypeEncoding(java.lang.String mimeType, java.lang.String encoding)` Set the encoding that should be used for a mimeType.
`void` `setVirtualHosts(java.lang.String[] hosts)` Set the virtual hosts for the context.
`void` `setWelcomeFiles(java.lang.String[] welcomes)`
`void` `start()` Start the LifeCycle.
`void` `statsReset()`
`void` `stop()` Stop the context.
`void` `stop(boolean graceful)` Stop the context.
`java.lang.String` `toString()`
`java.lang.String` `toString(boolean detail)`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### __fileClassPathAttr

    public static final java.lang.String __fileClassPathAttr

  File class path attribute. If this name is set as a context init parameter, then the attribute name given will be used to set the file classpath for the context as a context attribute.

  See Also:
    Constant Field Values

Constructor Detail

### HttpContext

    public HttpContext()

  Constructor.

### HttpContext

    public HttpContext(HttpServer httpServer,
                       java.lang.String contextPathSpec)

  Constructor.

Parameters:
  `httpServer` -
  `contextPathSpec` -

Method Detail

### getHttpConnection

    public HttpConnection getHttpConnection()

  Get the ThreadLocal HttpConnection. Get the HttpConnection for current thread, if any. This method is not static in order to control access.

  Returns:
    HttpConnection for this thread.

### getHttpServer

    public HttpServer getHttpServer()

### canonicalContextPathSpec

    public static java.lang.String canonicalContextPathSpec(java.lang.String contextPathSpec)

### setContextPath

    public void setContextPath(java.lang.String contextPathSpec)

### getContextPath

    public java.lang.String getContextPath()

  Returns:
    The context prefix

### addVirtualHost

    public void addVirtualHost(java.lang.String hostname)

  Add a virtual host alias to this context.

  Parameters:
    `hostname` - A hostname. A null host name means any hostname is acceptable. Host names may String representation of IP addresses.
  See Also:
    `setVirtualHosts(java.lang.String[])`

### removeVirtualHost

    public void removeVirtualHost(java.lang.String hostname)

  remove a virtual host alias to this context.

  Parameters:
    `hostname` - A hostname. A null host name means any hostname is acceptable. Host names may String representation of IP addresses.
  See Also:
    `setVirtualHosts(java.lang.String[])`

### setVirtualHosts

    public void setVirtualHosts(java.lang.String[] hosts)

  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:
    `hosts` - 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.

### setHosts

    public void setHosts(java.lang.String[] hosts)
                  throws java.net.UnknownHostException

  Set the hosts for the context. Set the real hosts that this context will accept requests for. If not null or empty, then only requests from HttpListeners for hosts in this array are accepted by this context. Unlike virutal hosts, this value is not used by HttpServer for matching a request to a context.

    `java.net.UnknownHostException`

### getHosts

    public java.lang.String[] getHosts()

  Get the hosts for the context.

### getVirtualHosts

    public java.lang.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.

### setHandlers

    public void setHandlers(HttpHandler[] handlers)

### getHandlers

    public HttpHandler[] getHandlers()

  Get all handlers.

  Returns:
    List of all HttpHandlers

### addHandler

    public void addHandler(int i,
                           HttpHandler handler)

  Add a handler.

  Parameters:
    `i` - The position in the handler list
    `handler` - The handler.

### addHandler

    public void addHandler(HttpHandler handler)

  Add a HttpHandler to the context.

  Parameters:
    `handler` -

### getHandlerIndex

    public int getHandlerIndex(HttpHandler handler)

  Get handler index.

  Parameters:
    `handler` - instance
  Returns:
    Index of handler in context or -1 if not found.

### getHandler

    public HttpHandler getHandler(java.lang.Class handlerClass)

  Get a handler by class.

  Parameters:
    `handlerClass` -
  Returns:
    The first handler that is an instance of the handlerClass

### removeHandler

    public HttpHandler removeHandler(int i)

  Remove a handler. The handler must be stopped before being removed.

  Parameters:
    `i` - index of handler

### removeHandler

    public void removeHandler(HttpHandler handler)

  Remove a handler. The handler must be stopped before being removed.

### setInitParameter

    public void setInitParameter(java.lang.String param,
                                 java.lang.String value)

  Set context init parameter. Init Parameters differ from attributes as they can only have string values, servlets cannot set them and they do not have a package scoped name space.

  Parameters:
    `param` - param name
    `value` - param value or null

### getInitParameter

    public java.lang.String getInitParameter(java.lang.String param)

  Get context init parameter.

  Parameters:
    `param` - param name
  Returns:
    param value or null

### getInitParameterNames

    public java.util.Enumeration getInitParameterNames()

  Get context init parameter.

  Returns:
    Enumeration of names

### setAttribute

    public void setAttribute(java.lang.String name,
                             java.lang.Object value)

  Set a context attribute. Attributes are cleared when the context is stopped.

  Parameters:
    `name` - attribute name
    `value` - attribute value

### getAttribute

    public java.lang.Object getAttribute(java.lang.String name)

  Parameters:
    `name` - attribute name
  Returns:
    attribute value or null

### getAttributes

    public java.util.Map getAttributes()

### setAttributes

    public void setAttributes(java.util.Map attributes)

### getAttributeNames

    public java.util.Enumeration getAttributeNames()

  Returns:
    enumaration of names.

### removeAttribute

    public void removeAttribute(java.lang.String name)

  Parameters:
    `name` - attribute name

### getResourceBase

    public java.lang.String getResourceBase()

  Set the Resource Base. The base resource is the Resource to use as a relative base for all context resources. The ResourceBase attribute is a string version of the baseResource. If a relative file is passed, it is converted to a file URL based on the current working directory.

  Returns:
    The file or URL to use as the base for all resources within the context.

### setResourceBase

    public void setResourceBase(java.lang.String resourceBase)

  Set the Resource Base. The base resource is the Resource to use as a relative base for all context resources. The ResourceBase attribute is a string version of the baseResource. If a relative file is passed, it is converted to a file URL based on the current working directory.

  Parameters:
    `resourceBase` - A URL prefix or directory name.

### getBaseResource

    public Resource getBaseResource()

  Get the base resource. The base resource is the Resource to use as a relative base for all context resources. The ResourceBase attribute is a string version of the baseResource.

  Returns:
    The resourceBase as a Resource instance

### setBaseResource

    public void setBaseResource(Resource base)

  Set the base resource. The base resource is the Resource to use as a relative base for all context resources. The ResourceBase attribute is a string version of the baseResource.

  Parameters:
    `base` - The resourceBase as a Resource instance

### getMaxCachedFileSize

    public int getMaxCachedFileSize()

### setMaxCachedFileSize

    public void setMaxCachedFileSize(int maxCachedFileSize)

### getMaxCacheSize

    public int getMaxCacheSize()

### setMaxCacheSize

    public void setMaxCacheSize(int maxCacheSize)

### flushCache

    public void flushCache()

### getWelcomeFiles

    public java.lang.String[] getWelcomeFiles()

### setWelcomeFiles

    public void setWelcomeFiles(java.lang.String[] welcomes)

### addWelcomeFile

    public void addWelcomeFile(java.lang.String welcomeFile)

### removeWelcomeFile

    public void removeWelcomeFile(java.lang.String welcomeFile)

### getResource

    public Resource getResource(java.lang.String pathInContext)
                         throws java.io.IOException

  Get a resource from the context. Cached Resources are returned if the resource fits within the LRU cache. Directories may have CachedResources returned, but the caller must use the CachedResource.setCachedData method to set the formatted directory content.

  Parameters:
    `pathInContext` -
  Returns:
    Resource
  Throws:
    `java.io.IOException`

### getWelcomeFile

    public java.lang.String getWelcomeFile(Resource resource)
                                    throws java.io.IOException

    `java.io.IOException`

### getMimeMap

    public java.util.Map getMimeMap()

### setMimeMap

    public void setMimeMap(java.util.Map mimeMap)

  Also sets the org.mortbay.http.mimeMap context attribute

  Parameters:
    `mimeMap` -

### getMimeByExtension

    public java.lang.String getMimeByExtension(java.lang.String filename)

  Get the MIME type by filename extension.

  Parameters:
    `filename` - A file name
  Returns:
    MIME type matching the longest dot extension of the file name.

### setMimeMapping

    public void setMimeMapping(java.lang.String extension,
                               java.lang.String type)

  Set a mime mapping

  Parameters:
    `extension` -
    `type` -

### getClassPath

    public java.lang.String getClassPath()

  Get the context classpath. This method only returns the paths that have been set for this context and does not include any paths from a parent or the system classloader. Note that this may not be a legal javac classpath.

  Returns:
    a comma or ';' separated list of class resources. These may be jar files, directories or URLs to jars or directories.
  See Also:
    `getFileClassPath()`

### getFileClassPath

    public java.lang.String getFileClassPath()
                                      throws java.lang.IllegalStateException

  Get the file classpath of the context. This method makes a best effort to return a complete file classpath for the context. It is obtained by walking the classloader hierarchy and looking for URLClassLoaders. The system property java.class.path is also checked for file elements not already found in the loader hierarchy.

  Returns:
    Path of files and directories for loading classes.
  Throws:
    `java.lang.IllegalStateException` - HttpContext.initClassLoader has not been called.

### setClassPath

    public void setClassPath(java.lang.String classPath)

  Sets the class path for the context. A class path is only required for a context if it uses classes that are not in the system class path.

  Parameters:
    `classPath` - a comma or ';' separated list of class resources. These may be jar files, directories or URLs to jars or directories.

### setClassPaths

    public void setClassPaths(Resource lib,
                              boolean append)

  Sets the class path for the context from the jar and zip files found in the specified resource.

  Parameters:
    `lib` - the resource that contains the jar and/or zip files.
    `append` - true if the classpath entries are to be appended to any existing classpath, or false if they replace the existing classpath.
  See Also:
    `setClassPath(String)`

### setClassPaths

    public void setClassPaths(java.lang.String lib,
                              boolean append)
                       throws java.io.IOException

  Sets the class path for the context from the jar and zip files found in the specified resource.

  Parameters:
    `lib` - the resource that contains the jar and/or zip files.
    `append` - true if the classpath entries are to be appended to any existing classpath, or false if they are to be prepended.
  Throws:
    `java.io.IOException`

### isClassLoaderJava2Compliant

    public boolean isClassLoaderJava2Compliant()

  Get Java2 compliant classloading.

  Returns:
    If true, the class loader will conform to the java 2 specification and delegate all loads to the parent classloader. If false, the context classloader only delegate loads for system classes or classes that it can't find itself.

### setClassLoaderJava2Compliant

    public void setClassLoaderJava2Compliant(boolean compliant)

  Set Java2 compliant classloading.

  Parameters:
    `compliant` - If true, the class loader will conform to the java 2 specification and delegate all loads to the parent classloader. If false, the context classloader only delegate loads for system classes or classes that it can't find itself.

### setTempDirectory

    public void setTempDirectory(java.io.File dir)

  Set temporary directory for context. The javax.servlet.context.tempdir attribute is also set.

  Parameters:
    `dir` - Writable temporary directory.

### getTempDirectory

    public java.io.File getTempDirectory()

  Get Context temporary directory. A tempory directory is generated if it has not been set. The "javax.servlet.context.tempdir" attribute is consulted and if not set, the host, port and context are used to generate a directory within the JVMs temporary directory. If a temp directory has to be created, then a directory at jetty.home/work is used if it exists. If not, then java.io.tempdir is used. Directories created in java.io.tempdir are marked deleteOnExit and are deleted if discovered on startup.

  Returns:
    Temporary directory as a File.

### setClassLoader

    public void setClassLoader(java.lang.ClassLoader loader)

  Set ClassLoader.

  Parameters:
    `loader` - The loader to be used by this context.

### getClassLoader

    public java.lang.ClassLoader getClassLoader()

  Get the classloader. If no classloader has been set and the context has been loaded normally, then null is returned. If no classloader has been set and the context was loaded from a classloader, that loader is returned. If a classloader has been set and no classpath has been set then the set classloader is returned. If a classloader and a classpath has been set, then a new URLClassloader initialized on the classpath with the set loader as a partent is return.

  Returns:
    Classloader or null.

### setParentClassLoader

    public void setParentClassLoader(java.lang.ClassLoader loader)

  Set Parent ClassLoader. By default the parent loader is the thread context classloader of the thread that calls initClassLoader. If setClassLoader is called, then the parent is ignored.

  Parameters:
    `loader` - The class loader to use for the parent loader of the context classloader.

### getParentClassLoader

    public java.lang.ClassLoader getParentClassLoader()

### loadClass

    public java.lang.Class loadClass(java.lang.String className)
                              throws java.lang.ClassNotFoundException

    `java.lang.ClassNotFoundException`

### setErrorPage

    public void setErrorPage(java.lang.String error,
                             java.lang.String uriInContext)

  set error page URI.

  Parameters:
    `error` - A string representing an error code or a exception classname
    `uriInContext` -

### getErrorPage

    public java.lang.String getErrorPage(java.lang.String error)

  get error page URI.

  Parameters:
    `error` - A string representing an error code or a exception classname
  Returns:
    URI within context

### removeErrorPage

    public java.lang.String removeErrorPage(java.lang.String error)

### setRealmName

    public void setRealmName(java.lang.String realmName)

  Set the realm name.

  Parameters:
    `realmName` - The name to use to retrieve the actual realm from the HttpServer

### getRealmName

    public java.lang.String getRealmName()

### setRealm

    public void setRealm(UserRealm realm)

  Set the realm.

### getRealm

    public UserRealm getRealm()

### getAuthenticator

    public SecurityConstraint.Authenticator getAuthenticator()

### setAuthenticator

    public void setAuthenticator(SecurityConstraint.Authenticator authenticator)

### addSecurityConstraint

    public void addSecurityConstraint(java.lang.String pathSpec,
                                      SecurityConstraint sc)

### isAuthConstrained

    public boolean isAuthConstrained()

### clearSecurityConstraints

    public void clearSecurityConstraints()

### checkSecurityConstraints

    public boolean checkSecurityConstraints(java.lang.String pathInContext,
                                            HttpRequest request,
                                            HttpResponse response)
                                     throws HttpException,
                                            java.io.IOException

    `HttpException`
    `java.io.IOException`

### getEncodingMap

    public java.util.Map getEncodingMap()

  Get the map of mime type to char encoding.

  Returns:
    Map of mime type to character encodings.

### setEncodingMap

    public void setEncodingMap(java.util.Map encodingMap)

  Set the map of mime type to char encoding. Also sets the org.mortbay.http.encodingMap context attribute

  Parameters:
    `encodingMap` - Map of mime type to character encodings.

### getEncodingByMimeType

    public java.lang.String getEncodingByMimeType(java.lang.String type)

  Get char encoding by mime type.

  Parameters:
    `type` - A mime type.
  Returns:
    The prefered character encoding for that type if known.

### setTypeEncoding

    public void setTypeEncoding(java.lang.String mimeType,
                                java.lang.String encoding)

  Set the encoding that should be used for a mimeType.

  Parameters:
    `mimeType` -
    `encoding` -

### setRedirectNullPath

    public void setRedirectNullPath(boolean b)

  Set null path redirection.

  Parameters:
    `b` - if true a /context request will be redirected to /context/ if there is not path in the context.

### isRedirectNullPath

    public boolean isRedirectNullPath()

  Returns:
    True if a /context request is redirected to /context/ if there is not path in the context.

### setPermissions

    public void setPermissions(java.security.PermissionCollection permissions)

  Set the permissions to be used for this context. The collection of permissions set here are used for all classes loaded by this context. This is simpler that creating a security policy file, as not all code sources may be statically known.

  Parameters:
    `permissions` -

### getPermissions

    public java.security.PermissionCollection getPermissions()

  Get the permissions to be used for this context.

### addPermission

    public void addPermission(java.security.Permission permission)

  Add a permission to this context. The collection of permissions set here are used for all classes loaded by this context. This is simpler that creating a security policy file, as not all code sources may be statically known.

  Parameters:
    `permission` -

### handle

    public boolean handle(HttpRequest request,
                          HttpResponse response)
                   throws HttpException,
                          java.io.IOException

  Handler request. Determine the path within the context and then call handle(pathInContext,request,response).

  Parameters:
    `request` -
    `response` -
  Returns:
    True if the request has been handled.
  Throws:
    `HttpException`
    `java.io.IOException`

### handle

    public boolean handle(java.lang.String pathInContext,
                          java.lang.String pathParams,
                          HttpRequest request,
                          HttpResponse response)
                   throws HttpException,
                          java.io.IOException

  Handler request. Call each HttpHandler until request is handled.

  Parameters:
    `pathInContext` - Path in context
    `pathParams` - Path parameters such as encoded Session ID
    `request` -
    `response` -
  Returns:
    True if the request has been handled.
  Throws:
    `HttpException`
    `java.io.IOException`

### getHttpContextName

    public java.lang.String getHttpContextName()

### toString

    public java.lang.String toString()

  Overrides:
    `toString` in class `java.lang.Object`

### toString

    public java.lang.String toString(boolean detail)

### start

    public void start()
               throws java.lang.Exception

  Description copied from interface: `LifeCycle`
  Start the LifeCycle.

  Specified by:
    `start` in interface `LifeCycle`
  Throws:
    `java.lang.Exception` - An arbitrary exception may be thrown.

### isStarted

    public boolean isStarted()

  Specified by:
    `isStarted` in interface `LifeCycle`
  Returns:
    True if the LifeCycle has been started.

### stop

    public void stop(boolean graceful)
              throws java.lang.InterruptedException

  Stop the context.

  Parameters:
    `graceful` - If true and statistics are on, then this method will wait for requestsActive to go to zero before calling stop()
    `java.lang.InterruptedException`

### stop

    public void stop()
              throws java.lang.InterruptedException

  Stop the context.

  Specified by:
    `stop` in interface `LifeCycle`
  Throws:
    `java.lang.InterruptedException` - Stopping a lifecycle is rarely atomic and may be interrupted by another thread. If this happens InterruptedException is throw and the component will be in an indeterminant state and should probably be discarded.

### destroy

    public void destroy()

  Destroy a context. Destroy a context and remove it from the HttpServer. The HttpContext must be stopped before it can be destroyed.

### setRequestLog

    public void setRequestLog(RequestLog log)

  Set the request log.

  Parameters:
    `log` - RequestLog to use.

### getRequestLog

    public RequestLog getRequestLog()

### setStatsOn

    public void setStatsOn(boolean on)

  True set statistics recording on for this context.

  Parameters:
    `on` - If true, statistics will be recorded for this context.

### getStatsOn

    public boolean getStatsOn()

### getStatsOnMs

    public long getStatsOnMs()

### statsReset

    public void statsReset()

### getRequests

    public int getRequests()

  Returns:
    Get the number of requests handled by this context since last call of statsReset(). If setStatsOn(false) then this is undefined.

### getRequestsActive

    public int getRequestsActive()

  Returns:
    Number of requests currently active. Undefined if setStatsOn(false).

### getRequestsActiveMax

    public int getRequestsActiveMax()

  Returns:
    Maximum number of active requests since statsReset() called. Undefined if setStatsOn(false).

### getResponses1xx

    public int getResponses1xx()

  Returns:
    Get the number of responses with a 2xx status returned by this context since last call of statsReset(). Undefined if if setStatsOn(false).

### getResponses2xx

    public int getResponses2xx()

  Returns:
    Get the number of responses with a 100 status returned by this context since last call of statsReset(). Undefined if if setStatsOn(false).

### getResponses3xx

    public int getResponses3xx()

  Returns:
    Get the number of responses with a 3xx status returned by this context since last call of statsReset(). Undefined if if setStatsOn(false).

### getResponses4xx

    public int getResponses4xx()

  Returns:
    Get the number of responses with a 4xx status returned by this context since last call of statsReset(). Undefined if if setStatsOn(false).

### getResponses5xx

    public int getResponses5xx()

  Returns:
    Get the number of responses with a 5xx status returned by this context since last call of statsReset(). Undefined if if setStatsOn(false).

### log

    public void log(HttpRequest request,
                    HttpResponse response,
                    int length)

  Log a request and response. Statistics are also collected by this method.

  Parameters:
    `request` -
    `response` -

### getResourceMetaData

    public HttpContext.ResourceMetaData getResourceMetaData(Resource resource)

  Get Resource MetaData. This is a temp method until the resource cache is split out from the HttpContext.

  Parameters:
    `resource` -
  Returns:
    Meta data for the resource.

Copyright © 2000 Mortbay Consulting Pty. Ltd. All Rights Reserved.