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.