addClassPath
public void addClassPath(String classPath)
Add the class path element to the context.
A class path is only required for a context if it uses classes
that are not in the system class path.
classPath
- a comma or ';' separated list of class
resources. These may be jar files, directories or URLs to jars
or directories.
addClassPaths
public void addClassPaths(Resource lib)
Add elements to the class path for the context from the jar and zip files found
in the specified resource.
lib
- the resource that contains the jar and/or zip files.
addHandler
public void addHandler(int i,
HttpHandler handler)
Add a handler.
i
- The position in the handler listhandler
- The handler.
addHandler
public void addHandler(HttpHandler handler)
Add a HttpHandler to the context.
addPermission
public void addPermission(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.
addSecurityConstraint
public void addSecurityConstraint(String pathSpec,
SecurityConstraint sc)
addVirtualHost
public void addVirtualHost(String hostname)
Add a virtual host alias to this context.
hostname
- A hostname. A null host name means any hostname is
acceptable. Host names may String representation of IP addresses.
addWelcomeFile
public void addWelcomeFile(String welcomeFile)
canonicalContextPathSpec
public static String canonicalContextPathSpec(String contextPathSpec)
clearSecurityConstraints
public void clearSecurityConstraints()
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.
- destroy in interface Container
doStop
protected void doStop()
throws Exception
Stop the context.
- doStop in interface Container
enterContextScope
public Object enterContextScope(HttpRequest request,
HttpResponse response)
Enter the context scope.
This method is called (by handle or servlet dispatchers) to indicate that
request handling is entering the scope of this context. The opaque scope object
returned, should be passed to the leaveContextScope method.
flushCache
public void flushCache()
getAttribute
public Object getAttribute(String name)
getAttributeNames
public Enumeration getAttributeNames()
getAttributes
public Map getAttributes()
getBaseResource
public Resource getBaseResource()
getClassLoader
public 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.
getClassPath
public 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.
- a comma or ';' separated list of class
resources. These may be jar files, directories or URLs to jars
or directories.
getContextPath
public String getContextPath()
getEncodingByMimeType
public String getEncodingByMimeType(String type)
getEncodingMap
public Map getEncodingMap()
getFileClassPath
public String getFileClassPath()
throws 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.
- Path of files and directories for loading classes.
getHandler
public HttpHandler getHandler(Class handlerClass)
Get a handler by class.
- The first handler that is an instance of the handlerClass
getHandlerIndex
public int getHandlerIndex(HttpHandler handler)
Get handler index.
- Index of handler in context or -1 if not found.
getHandlers
public HttpHandler[] getHandlers()
Get all handlers.
getHosts
public String[] getHosts()
Get the hosts for the context.
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.
- HttpConnection for this thread.
getHttpContextName
public String getHttpContextName()
getInitParameter
public String getInitParameter(String param)
Get context init parameter.
getInitParameterNames
public Enumeration getInitParameterNames()
Get context init parameter.
getMaxCacheSize
public int getMaxCacheSize()
getMaxCachedFileSize
public int getMaxCachedFileSize()
getMimeByExtension
public String getMimeByExtension(String filename)
getMimeMap
public Map getMimeMap()
getName
public String getName()
Get the name of the handler.
- getName in interface HttpHandler
- The name of the handler used for logging and reporting.
getParentClassLoader
public ClassLoader getParentClassLoader()
getPermissions
public PermissionCollection getPermissions()
Get the permissions to be used for this context.
getRealmName
public String getRealmName()
getRequests
public int getRequests()
- 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()
- Number of requests currently active.
Undefined if setStatsOn(false).
getRequestsActiveMax
public int getRequestsActiveMax()
- Maximum number of active requests
since statsReset() called. Undefined if setStatsOn(false).
getResource
public Resource getResource(String pathInContext)
throws IOException
getResourceBase
public String getResourceBase()
getResponses1xx
public int getResponses1xx()
- 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()
- 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()
- 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()
- 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()
- Get the number of responses with a 5xx status returned
by this context since last call of statsReset(). Undefined if
if setStatsOn(false).
getServerClasses
public String[] getServerClasses()
Get system classes.
System classes cannot be seen by context classloaders.
- array of classname Strings. Names ending with '.' are treated as package names. Names starting with '-' are treated as
negative matches and must be listed before any enclosing packages. Null if not set.
getStatsOn
public boolean getStatsOn()
getStatsOnMs
public long getStatsOnMs()
getStopGracefully
public boolean getStopGracefully()
getSystemClasses
public String[] getSystemClasses()
Get system classes.
System classes cannot be overriden by context classloaders.
- array of classname Strings. Names ending with '.' are treated as package names. Names starting with '-' are treated as
negative matches and must be listed before any enclosing packages. Null if not set.
getTempDirectory
public 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.
- Temporary directory as a File.
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.
- 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.
getWelcomeFile
public String getWelcomeFile(Resource resource)
throws IOException
getWelcomeFiles
public String[] getWelcomeFiles()
handle
public void handle(String pathInContext,
String pathParams,
HttpRequest request,
HttpResponse response)
throws HttpException,
IOException
Handler request.
Call each HttpHandler until request is handled.
- handle in interface HttpHandler
pathInContext
- Path in contextpathParams
- Path parameters such as encoded Session IDrequest
- response
-
handle
public void handle(HttpRequest request,
HttpResponse response)
throws HttpException,
IOException
Handler request.
Determine the path within the context and then call
handle(pathInContext,request,response).
initClassLoader
protected void initClassLoader(boolean forceContextLoader)
throws MalformedURLException,
IOException
Initialize the context classloader.
Initialize the context classloader with the current parameters.
Any attempts to change the classpath after this call will
result in a IllegalStateException
forceContextLoader
- If true, a ContextLoader is always if
no loader has been set.
isClassLoaderJava2Compliant
public boolean isClassLoaderJava2Compliant()
Get Java2 compliant classloading.
- 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.
isRedirectNullPath
public boolean isRedirectNullPath()
- True if a /context request is redirected to /context/ if
there is not path in the context.
leaveContextScope
public void leaveContextScope(HttpRequest request,
HttpResponse response,
Object oldScope)
Leave the context scope.
This method is called (by handle or servlet dispatchers) to indicate that
request handling is leaveing the scope of this context. The opaque scope object
returned by enterContextScope should be passed in.
loadClass
public Class loadClass(String className)
throws ClassNotFoundException
log
public void log(HttpRequest request,
HttpResponse response,
int length)
Log a request and response.
Statistics are also collected by this method.
removeAttribute
public void removeAttribute(String name)
removeHandler
public HttpHandler removeHandler(int i)
Remove a handler.
The handler must be stopped before being removed.
removeHandler
public void removeHandler(HttpHandler handler)
Remove a handler.
The handler must be stopped before being removed.
removeVirtualHost
public void removeVirtualHost(String hostname)
remove a virtual host alias to this context.
hostname
- A hostname. A null host name means any hostname is
acceptable. Host names may String representation of IP addresses.
removeWelcomeFile
public void removeWelcomeFile(String welcomeFile)
sendContextError
public static void sendContextError(HttpResponse response,
int code,
String msg)
throws IOException
Send an error response.
This method obtains the responses context and call sendError for context specific
error handling.
response
- the response to sendcode
- The error codemsg
- The message for the error or null for the default
sendError
public void sendError(HttpResponse response,
int code,
String msg)
throws IOException
Send an error response.
This method may be specialized to provide alternative error handling for
errors generated by the container. The default implemenation calls HttpResponse.sendError
response
- the response to sendcode
- The error codemsg
- The message for the error or null for the default
setAttribute
public void setAttribute(String name,
Object value)
Set a context attribute.
name
- attribute namevalue
- attribute value
setAttributes
public void setAttributes(Map attributes)
setAuthenticator
public void setAuthenticator(Authenticator authenticator)
setBaseResource
public void setBaseResource(Resource base)
setClassLoader
public void setClassLoader(ClassLoader loader)
Set ClassLoader.
loader
- The loader to be used by this context.
setClassLoaderJava2Compliant
public void setClassLoaderJava2Compliant(boolean compliant)
Set Java2 compliant classloading.
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.
setClassPath
public void setClassPath(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.
classPath
- a comma or ';' separated list of class
resources. These may be jar files, directories or URLs to jars
or directories.
setContextPath
public void setContextPath(String contextPathSpec)
setEncodingMap
public void setEncodingMap(Map encodingMap)
setHandlers
public void setHandlers(HttpHandler[] handlers)
setHosts
public void setHosts(String[] hosts)
throws 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.
setHttpContextName
public void setHttpContextName(String s)
setInitParameter
public void setInitParameter(String param,
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.
param
- param namevalue
- param value or null
setMaxCacheSize
public void setMaxCacheSize(int maxCacheSize)
setMaxCachedFileSize
public void setMaxCachedFileSize(int maxCachedFileSize)
setMimeMap
public void setMimeMap(Map mimeMap)
setMimeMapping
public void setMimeMapping(String extension,
String type)
setParentClassLoader
public void setParentClassLoader(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.
loader
- The class loader to use for the parent loader of
the context classloader.
setPermissions
public void setPermissions(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.
setRealm
public void setRealm(UserRealm realm)
Set the realm.
setRealmName
public void setRealmName(String realmName)
Set the realm name.
realmName
- The name to use to retrieve the actual realm
from the HttpServer
setRedirectNullPath
public void setRedirectNullPath(boolean b)
Set null path redirection.
b
- if true a /context request will be redirected to
/context/ if there is not path in the context.
setRequestLog
public void setRequestLog(RequestLog log)
Set the request log.
setResourceBase
public void setResourceBase(String resourceBase)
setServerClasses
public void setServerClasses(String[] classes)
Set system classes.
Servers classes cannot be seen by context classloaders.
classes
- array of classname Strings. Names ending with '.' are treated as package names. Names starting with '-' are treated as
negative matches and must be listed before any enclosing packages.
setStatsOn
public void setStatsOn(boolean on)
True set statistics recording on for this context.
on
- If true, statistics will be recorded for this context.
setStopGracefully
public void setStopGracefully(boolean graceful)
setSystemClasses
public void setSystemClasses(String[] classes)
Set system classes.
System classes cannot be overriden by context classloaders.
classes
- array of classname Strings. Names ending with '.' are treated as package names. Names starting with '-' are treated as
negative matches and must be listed before any enclosing packages.
setTempDirectory
public void setTempDirectory(File dir)
Set temporary directory for context.
The javax.servlet.context.tempdir attribute is also set.
dir
- Writable temporary directory.
setTypeEncoding
public void setTypeEncoding(String mimeType,
String encoding)
setVirtualHosts
public void setVirtualHosts(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.
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.
setWelcomeFiles
public void setWelcomeFiles(String[] welcomes)
startHandlers
protected void startHandlers()
throws Exception
Start the handlers.
This is called by start after the classloader has been
initialized and set as the thread context loader.
It may be specialized to provide custom handling
before any handlers are started.
statsReset
public void statsReset()
stop
public void stop(boolean graceful)
throws InterruptedException
Stop the context.
graceful
- If true and statistics are on, then this method will wait
for requestsActive to go to zero before calling stop()
toString
public String toString()
toString
public String toString(boolean detail)