org.apache.catalina.Context Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.catalina;
import java.net.URL;
import java.util.Set;
import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContext;
import javax.servlet.descriptor.JspConfigDescriptor;
import org.apache.tomcat.JarScanner;
import org.apache.tomcat.util.http.mapper.Mapper;
import org.apache.catalina.deploy.ApplicationParameter;
import org.apache.catalina.deploy.ErrorPage;
import org.apache.catalina.deploy.FilterDef;
import org.apache.catalina.deploy.FilterMap;
import org.apache.catalina.deploy.LoginConfig;
import org.apache.catalina.deploy.NamingResources;
import org.apache.catalina.deploy.SecurityConstraint;
import org.apache.catalina.util.CharsetMapper;
/**
* A Context is a Container that represents a servlet context, and
* therefore an individual web application, in the Catalina servlet engine.
* It is therefore useful in almost every deployment of Catalina (even if a
* Connector attached to a web server (such as Apache) uses the web server's
* facilities to identify the appropriate Wrapper to handle this request.
* It also provides a convenient mechanism to use Interceptors that see
* every request processed by this particular web application.
*
* The parent Container attached to a Context is generally a Host, but may
* be some other implementation, or may be omitted if it is not necessary.
*
* The child containers attached to a Context are generally implementations
* of Wrapper (representing individual servlet definitions).
*
*
* @author Craig R. McClanahan
* @version $Id: Context.java 944738 2010-05-15 22:40:16Z markt $
*/
public interface Context extends Container {
// ----------------------------------------------------- Manifest Constants
/**
* The LifecycleEvent type sent when a context is reloaded.
*/
public static final String RELOAD_EVENT = "reload";
/**
* Container event for adding a welcome file.
*/
public static final String ADD_WELCOME_FILE_EVENT = "addWelcomeFile";
/**
* Container event for removing a wrapper.
*/
public static final String REMOVE_WELCOME_FILE_EVENT = "removeWelcomeFile";
/**
* Container event for clearing welcome files.
*/
public static final String CLEAR_WELCOME_FILES_EVENT = "clearWelcomeFiles";
// ------------------------------------------------------------- Properties
/**
* Return the set of initialized application event listener objects,
* in the order they were specified in the web application deployment
* descriptor, for this application.
*
* @exception IllegalStateException if this method is called before
* this application has started, or after it has been stopped
*/
public Object[] getApplicationEventListeners();
/**
* Store the set of initialized application event listener objects,
* in the order they were specified in the web application deployment
* descriptor, for this application.
*
* @param listeners The set of instantiated listener objects.
*/
public void setApplicationEventListeners(Object listeners[]);
/**
* Return the set of initialized application lifecycle listener objects,
* in the order they were specified in the web application deployment
* descriptor, for this application.
*
* @exception IllegalStateException if this method is called before
* this application has started, or after it has been stopped
*/
public Object[] getApplicationLifecycleListeners();
/**
* Store the set of initialized application lifecycle listener objects,
* in the order they were specified in the web application deployment
* descriptor, for this application.
*
* @param listeners The set of instantiated listener objects.
*/
public void setApplicationLifecycleListeners(Object listeners[]);
/**
* Return the application available flag for this Context.
*/
public boolean getAvailable();
/**
* Return the Locale to character set mapper for this Context.
*/
public CharsetMapper getCharsetMapper();
/**
* Set the Locale to character set mapper for this Context.
*
* @param mapper The new mapper
*/
public void setCharsetMapper(CharsetMapper mapper);
/**
* Return the URL of the XML descriptor for this context.
*/
public URL getConfigFile();
/**
* Set the URL of the XML descriptor for this context.
*
* @param configFile The URL of the XML descriptor for this context.
*/
public void setConfigFile(URL configFile);
/**
* Return the "correctly configured" flag for this Context.
*/
public boolean getConfigured();
/**
* Set the "correctly configured" flag for this Context. This can be
* set to false by startup listeners that detect a fatal configuration
* error to avoid the application from being made available.
*
* @param configured The new correctly configured flag
*/
public void setConfigured(boolean configured);
/**
* Return the "use cookies for session ids" flag.
*/
public boolean getCookies();
/**
* Set the "use cookies for session ids" flag.
*
* @param cookies The new flag
*/
public void setCookies(boolean cookies);
/**
* Gets the name to use for session cookies. Overrides any setting that
* may be specified by the application.
*
* @return The value of the default session cookie name or null if not
* specified
*/
public String getSessionCookieName();
/**
* Sets the name to use for session cookies. Overrides any setting that
* may be specified by the application.
*
* @param sessionCookieName The name to use
*/
public void setSessionCookieName(String sessionCookieName);
/**
* Gets the value of the use HttpOnly cookies for session cookies flag.
*
* @return true
if the HttpOnly flag should be set on session
* cookies
*/
public boolean getUseHttpOnly();
/**
* Sets the use HttpOnly cookies for session cookies flag.
*
* @param useHttpOnly Set to true
to use HttpOnly cookies
* for session cookies
*/
public void setUseHttpOnly(boolean useHttpOnly);
/**
* Gets the domain to use for session cookies. Overrides any setting that
* may be specified by the application.
*
* @return The value of the default session cookie domain or null if not
* specified
*/
public String getSessionCookieDomain();
/**
* Sets the domain to use for session cookies. Overrides any setting that
* may be specified by the application.
*
* @param sessionCookieDomain The domain to use
*/
public void setSessionCookieDomain(String sessionCookieDomain);
/**
* Gets the path to use for session cookies. Overrides any setting that
* may be specified by the application.
*
* @return The value of the default session cookie path or null if not
* specified
*/
public String getSessionCookiePath();
/**
* Sets the path to use for session cookies. Overrides any setting that
* may be specified by the application.
*
* @param sessionCookiePath The path to use
*/
public void setSessionCookiePath(String sessionCookiePath);
/**
* Return the "allow crossing servlet contexts" flag.
*/
public boolean getCrossContext();
/**
* Return the alternate Deployment Descriptor name.
*/
public String getAltDDName();
/**
* Set an alternate Deployment Descriptor name.
*/
public void setAltDDName(String altDDName) ;
/**
* Set the "allow crossing servlet contexts" flag.
*
* @param crossContext The new cross contexts flag
*/
public void setCrossContext(boolean crossContext);
/**
* Return the display name of this web application.
*/
public String getDisplayName();
/**
* Set the display name of this web application.
*
* @param displayName The new display name
*/
public void setDisplayName(String displayName);
/**
* Return the distributable flag for this web application.
*/
public boolean getDistributable();
/**
* Set the distributable flag for this web application.
*
* @param distributable The new distributable flag
*/
public void setDistributable(boolean distributable);
/**
* Return the document root for this Context. This can be an absolute
* pathname, a relative pathname, or a URL.
*/
public String getDocBase();
/**
* Set the document root for this Context. This can be an absolute
* pathname, a relative pathname, or a URL.
*
* @param docBase The new document root
*/
public void setDocBase(String docBase);
/**
* Return the URL encoded context path, using UTF-8.
*/
public String getEncodedPath();
/**
* Return the boolean on the annotations parsing.
*/
public boolean getIgnoreAnnotations();
/**
* Set the boolean on the annotations parsing for this web
* application.
*
* @param ignoreAnnotations The boolean on the annotations parsing
*/
public void setIgnoreAnnotations(boolean ignoreAnnotations);
/**
* Return the login configuration descriptor for this web application.
*/
public LoginConfig getLoginConfig();
/**
* Set the login configuration descriptor for this web application.
*
* @param config The new login configuration
*/
public void setLoginConfig(LoginConfig config);
/**
* Get the request dispatcher mapper.
*/
public Mapper getMapper();
/**
* Return the naming resources associated with this web application.
*/
public NamingResources getNamingResources();
/**
* Set the naming resources for this web application.
*
* @param namingResources The new naming resources
*/
public void setNamingResources(NamingResources namingResources);
/**
* Return the context path for this web application.
*/
public String getPath();
/**
* Set the context path for this web application.
*
* @param path The new context path
*/
public void setPath(String path);
/**
* Return the public identifier of the deployment descriptor DTD that is
* currently being parsed.
*/
public String getPublicId();
/**
* Set the public identifier of the deployment descriptor DTD that is
* currently being parsed.
*
* @param publicId The public identifier
*/
public void setPublicId(String publicId);
/**
* Return the reloadable flag for this web application.
*/
public boolean getReloadable();
/**
* Set the reloadable flag for this web application.
*
* @param reloadable The new reloadable flag
*/
public void setReloadable(boolean reloadable);
/**
* Return the override flag for this web application.
*/
public boolean getOverride();
/**
* Set the override flag for this web application.
*
* @param override The new override flag
*/
public void setOverride(boolean override);
/**
* Return the privileged flag for this web application.
*/
public boolean getPrivileged();
/**
* Set the privileged flag for this web application.
*
* @param privileged The new privileged flag
*/
public void setPrivileged(boolean privileged);
/**
* Return the servlet context for which this Context is a facade.
*/
public ServletContext getServletContext();
/**
* Return the default session timeout (in minutes) for this
* web application.
*/
public int getSessionTimeout();
/**
* Set the default session timeout (in minutes) for this
* web application.
*
* @param timeout The new default session timeout
*/
public void setSessionTimeout(int timeout);
/**
* Return the value of the swallowOutput flag.
*/
public boolean getSwallowOutput();
/**
* Set the value of the swallowOutput flag. If set to true, the system.out
* and system.err will be redirected to the logger during a servlet
* execution.
*
* @param swallowOutput The new value
*/
public void setSwallowOutput(boolean swallowOutput);
/**
* Return the Java class name of the Wrapper implementation used
* for servlets registered in this Context.
*/
public String getWrapperClass();
/**
* Set the Java class name of the Wrapper implementation used
* for servlets registered in this Context.
*
* @param wrapperClass The new wrapper class
*/
public void setWrapperClass(String wrapperClass);
/**
* Get the server.xml attribute's xmlNamespaceAware.
* @return true if namespace awareness is enabled.
*
*/
public boolean getXmlNamespaceAware();
/**
* Get the server.xml attribute's xmlValidation.
* @return true if validation is enabled.
*
*/
public boolean getXmlValidation();
/**
* Set the validation feature of the XML parser used when
* parsing xml instances.
* @param xmlValidation true to enable xml instance validation
*/
public void setXmlValidation(boolean xmlValidation);
/**
* Set the namespace aware feature of the XML parser used when
* parsing xml instances.
* @param xmlNamespaceAware true to enable namespace awareness
*/
public void setXmlNamespaceAware(boolean xmlNamespaceAware);
/**
* Get the server.xml attribute's xmlValidation.
* @return true if validation is enabled.
*/
/**
* Set the validation feature of the XML parser used when
* parsing tlds files.
* @param tldValidation true to enable xml instance validation
*/
public void setTldValidation(boolean tldValidation);
/**
* Get the server.xml attribute's webXmlValidation.
* @return true if validation is enabled.
*
*/
public boolean getTldValidation();
/**
* Get the server.xml <host> attribute's xmlNamespaceAware.
* @return true if namespace awareness is enabled.
*/
public boolean getTldNamespaceAware();
/**
* Set the namespace aware feature of the XML parser used when
* parsing xml instances.
* @param tldNamespaceAware true to enable namespace awareness
*/
public void setTldNamespaceAware(boolean tldNamespaceAware);
/**
* Get the Jar Scanner to be used to scan for JAR resources for this
* context.
* @return The Jar Scanner configured for this context.
*/
public JarScanner getJarScanner();
/**
* Set the Jar Scanner to be used to scan for JAR resources for this
* context.
* @param jarScanner The Jar Scanner to be used for this context.
*/
public void setJarScanner(JarScanner jarScanner);
/**
* Obtain the {@link Authenticator} that is used by this context or
* null
if none is used.
*/
public Authenticator getAuthenticator();
/**
* Set whether or not the effective web.xml for this context should be
* logged on context start.
*/
public void setLogEffectiveWebXml(boolean logEffectiveWebXml);
/**
* Should the effective web.xml for this context be logged on context start?
*/
public boolean getLogEffectiveWebXml();
// --------------------------------------------------------- Public Methods
/**
* Add a new Listener class name to the set of Listeners
* configured for this application.
*
* @param listener Java class name of a listener class
*/
public void addApplicationListener(String listener);
/**
* Add a new application parameter for this application.
*
* @param parameter The new application parameter
*/
public void addApplicationParameter(ApplicationParameter parameter);
/**
* Add a security constraint to the set for this web application.
*/
public void addConstraint(SecurityConstraint constraint);
/**
* Add an error page for the specified error or Java exception.
*
* @param errorPage The error page definition to be added
*/
public void addErrorPage(ErrorPage errorPage);
/**
* Add a filter definition to this Context.
*
* @param filterDef The filter definition to be added
*/
public void addFilterDef(FilterDef filterDef);
/**
* Add a filter mapping to this Context.
*
* @param filterMap The filter mapping to be added
*/
public void addFilterMap(FilterMap filterMap);
/**
* Add a filter mapping to this Context before the mappings defined in the
* deployment descriptor but after any other mappings added via this method.
*
* @param filterMap The filter mapping to be added
*
* @exception IllegalArgumentException if the specified filter name
* does not match an existing filter definition, or the filter mapping
* is malformed
*/
public void addFilterMapBefore(FilterMap filterMap);
/**
* Add the classname of an InstanceListener to be added to each
* Wrapper appended to this Context.
*
* @param listener Java class name of an InstanceListener class
*/
public void addInstanceListener(String listener);
/**
* Add a Locale Encoding Mapping (see Sec 5.4 of Servlet spec 2.4)
*
* @param locale locale to map an encoding for
* @param encoding encoding to be used for a give locale
*/
public void addLocaleEncodingMappingParameter(String locale, String encoding);
/**
* Add a new MIME mapping, replacing any existing mapping for
* the specified extension.
*
* @param extension Filename extension being mapped
* @param mimeType Corresponding MIME type
*/
public void addMimeMapping(String extension, String mimeType);
/**
* Add a new context initialization parameter, replacing any existing
* value for the specified name.
*
* @param name Name of the new parameter
* @param value Value of the new parameter
*/
public void addParameter(String name, String value);
/**
* Add a security role reference for this web application.
*
* @param role Security role used in the application
* @param link Actual security role to check for
*/
public void addRoleMapping(String role, String link);
/**
* Add a new security role for this web application.
*
* @param role New security role
*/
public void addSecurityRole(String role);
/**
* Add a new servlet mapping, replacing any existing mapping for
* the specified pattern.
*
* @param pattern URL pattern to be mapped
* @param name Name of the corresponding servlet to execute
*/
public void addServletMapping(String pattern, String name);
/**
* Add a new servlet mapping, replacing any existing mapping for
* the specified pattern.
*
* @param pattern URL pattern to be mapped
* @param name Name of the corresponding servlet to execute
* @param jspWildcard true if name identifies the JspServlet
* and pattern contains a wildcard; false otherwise
*/
public void addServletMapping(String pattern, String name,
boolean jspWildcard);
/**
* Add a resource which will be watched for reloading by the host auto
* deployer. Note: this will not be used in embedded mode.
*
* @param name Path to the resource, relative to docBase
*/
public void addWatchedResource(String name);
/**
* Add a new welcome file to the set recognized by this Context.
*
* @param name New welcome file name
*/
public void addWelcomeFile(String name);
/**
* Add the classname of a LifecycleListener to be added to each
* Wrapper appended to this Context.
*
* @param listener Java class name of a LifecycleListener class
*/
public void addWrapperLifecycle(String listener);
/**
* Add the classname of a ContainerListener to be added to each
* Wrapper appended to this Context.
*
* @param listener Java class name of a ContainerListener class
*/
public void addWrapperListener(String listener);
/**
* Factory method to create and return a new Wrapper instance, of
* the Java implementation class appropriate for this Context
* implementation. The constructor of the instantiated Wrapper
* will have been called, but no properties will have been set.
*/
public Wrapper createWrapper();
/**
* Return the set of application listener class names configured
* for this application.
*/
public String[] findApplicationListeners();
/**
* Return the set of application parameters for this application.
*/
public ApplicationParameter[] findApplicationParameters();
/**
* Return the set of security constraints for this web application.
* If there are none, a zero-length array is returned.
*/
public SecurityConstraint[] findConstraints();
/**
* Return the error page entry for the specified HTTP error code,
* if any; otherwise return null
.
*
* @param errorCode Error code to look up
*/
public ErrorPage findErrorPage(int errorCode);
/**
* Return the error page entry for the specified Java exception type,
* if any; otherwise return null
.
*
* @param exceptionType Exception type to look up
*/
public ErrorPage findErrorPage(String exceptionType);
/**
* Return the set of defined error pages for all specified error codes
* and exception types.
*/
public ErrorPage[] findErrorPages();
/**
* Return the filter definition for the specified filter name, if any;
* otherwise return null
.
*
* @param filterName Filter name to look up
*/
public FilterDef findFilterDef(String filterName);
/**
* Return the set of defined filters for this Context.
*/
public FilterDef[] findFilterDefs();
/**
* Return the set of filter mappings for this Context.
*/
public FilterMap[] findFilterMaps();
/**
* Return the set of InstanceListener classes that will be added to
* newly created Wrappers automatically.
*/
public String[] findInstanceListeners();
/**
* Return the MIME type to which the specified extension is mapped,
* if any; otherwise return null
.
*
* @param extension Extension to map to a MIME type
*/
public String findMimeMapping(String extension);
/**
* Return the extensions for which MIME mappings are defined. If there
* are none, a zero-length array is returned.
*/
public String[] findMimeMappings();
/**
* Return the value for the specified context initialization
* parameter name, if any; otherwise return null
.
*
* @param name Name of the parameter to return
*/
public String findParameter(String name);
/**
* Return the names of all defined context initialization parameters
* for this Context. If no parameters are defined, a zero-length
* array is returned.
*/
public String[] findParameters();
/**
* For the given security role (as used by an application), return the
* corresponding role name (as defined by the underlying Realm) if there
* is one. Otherwise, return the specified role unchanged.
*
* @param role Security role to map
*/
public String findRoleMapping(String role);
/**
* Return true
if the specified security role is defined
* for this application; otherwise return false
.
*
* @param role Security role to verify
*/
public boolean findSecurityRole(String role);
/**
* Return the security roles defined for this application. If none
* have been defined, a zero-length array is returned.
*/
public String[] findSecurityRoles();
/**
* Return the servlet name mapped by the specified pattern (if any);
* otherwise return null
.
*
* @param pattern Pattern for which a mapping is requested
*/
public String findServletMapping(String pattern);
/**
* Return the patterns of all defined servlet mappings for this
* Context. If no mappings are defined, a zero-length array is returned.
*/
public String[] findServletMappings();
/**
* Return the context-relative URI of the error page for the specified
* HTTP status code, if any; otherwise return null
.
*
* @param status HTTP status code to look up
*/
public String findStatusPage(int status);
/**
* Return the set of HTTP status codes for which error pages have
* been specified. If none are specified, a zero-length array
* is returned.
*/
public int[] findStatusPages();
/**
* Return the set of watched resources for this Context. If none are
* defined, a zero length array will be returned.
*/
public String[] findWatchedResources();
/**
* Return true
if the specified welcome file is defined
* for this Context; otherwise return false
.
*
* @param name Welcome file to verify
*/
public boolean findWelcomeFile(String name);
/**
* Return the set of welcome files defined for this Context. If none are
* defined, a zero-length array is returned.
*/
public String[] findWelcomeFiles();
/**
* Return the set of LifecycleListener classes that will be added to
* newly created Wrappers automatically.
*/
public String[] findWrapperLifecycles();
/**
* Return the set of ContainerListener classes that will be added to
* newly created Wrappers automatically.
*/
public String[] findWrapperListeners();
/**
* Reload this web application, if reloading is supported.
*
* @exception IllegalStateException if the reloadable
* property is set to false
.
*/
public void reload();
/**
* Remove the specified application listener class from the set of
* listeners for this application.
*
* @param listener Java class name of the listener to be removed
*/
public void removeApplicationListener(String listener);
/**
* Remove the application parameter with the specified name from
* the set for this application.
*
* @param name Name of the application parameter to remove
*/
public void removeApplicationParameter(String name);
/**
* Remove the specified security constraint from this web application.
*
* @param constraint Constraint to be removed
*/
public void removeConstraint(SecurityConstraint constraint);
/**
* Remove the error page for the specified error code or
* Java language exception, if it exists; otherwise, no action is taken.
*
* @param errorPage The error page definition to be removed
*/
public void removeErrorPage(ErrorPage errorPage);
/**
* Remove the specified filter definition from this Context, if it exists;
* otherwise, no action is taken.
*
* @param filterDef Filter definition to be removed
*/
public void removeFilterDef(FilterDef filterDef);
/**
* Remove a filter mapping from this Context.
*
* @param filterMap The filter mapping to be removed
*/
public void removeFilterMap(FilterMap filterMap);
/**
* Remove a class name from the set of InstanceListener classes that
* will be added to newly created Wrappers.
*
* @param listener Class name of an InstanceListener class to be removed
*/
public void removeInstanceListener(String listener);
/**
* Remove the MIME mapping for the specified extension, if it exists;
* otherwise, no action is taken.
*
* @param extension Extension to remove the mapping for
*/
public void removeMimeMapping(String extension);
/**
* Remove the context initialization parameter with the specified
* name, if it exists; otherwise, no action is taken.
*
* @param name Name of the parameter to remove
*/
public void removeParameter(String name);
/**
* Remove any security role reference for the specified name
*
* @param role Security role (as used in the application) to remove
*/
public void removeRoleMapping(String role);
/**
* Remove any security role with the specified name.
*
* @param role Security role to remove
*/
public void removeSecurityRole(String role);
/**
* Remove any servlet mapping for the specified pattern, if it exists;
* otherwise, no action is taken.
*
* @param pattern URL pattern of the mapping to remove
*/
public void removeServletMapping(String pattern);
/**
* Remove the specified watched resource name from the list associated
* with this Context.
*
* @param name Name of the watched resource to be removed
*/
public void removeWatchedResource(String name);
/**
* Remove the specified welcome file name from the list recognized
* by this Context.
*
* @param name Name of the welcome file to be removed
*/
public void removeWelcomeFile(String name);
/**
* Remove a class name from the set of LifecycleListener classes that
* will be added to newly created Wrappers.
*
* @param listener Class name of a LifecycleListener class to be removed
*/
public void removeWrapperLifecycle(String listener);
/**
* Remove a class name from the set of ContainerListener classes that
* will be added to newly created Wrappers.
*
* @param listener Class name of a ContainerListener class to be removed
*/
public void removeWrapperListener(String listener);
/**
* Return the real path for a given virtual path, if possible; otherwise
* return null
.
*
* @param path The path to the desired resource
*/
public String getRealPath(String path);
/**
* Return the effective major version of the Servlet spec used by this
* context.
*/
public int getEffectiveMajorVersion();
/**
* Set the effective major version of the Servlet spec used by this
* context.
*/
public void setEffectiveMajorVersion(int major);
/**
* Return the effective minor version of the Servlet spec used by this
* context.
*/
public int getEffectiveMinorVersion();
/**
* Set the effective minor version of the Servlet spec used by this
* context.
*/
public void setEffectiveMinorVersion(int minor);
/**
* Obtain the JSP configuration for this context.
*/
public JspConfigDescriptor getJspConfigDescriptor();
/**
* Add a URL for a JAR that contains static resources in a
* META-INF/resources directory that should be included in the static
* resources for this context.
*/
public void addResourceJarUrl(URL url);
/**
* Add a ServletContainerInitializer instance to this web application.
*
* @param sci The instance to add
* @param classes The classes in which the initializer expressed an
* interest
*/
public void addServletContainerInitializer(
ServletContainerInitializer sci, Set> classes);
/**
* Is this Context paused whilst it is reloaded?
*
* @return
*/
public boolean getPaused();
}