Methods Summary |
---|
public void | addApplicationListener(java.lang.String listener)Add a new Listener class name to the set of Listeners
configured for this application.
synchronized (applicationListeners) {
String results[] =new String[applicationListeners.length + 1];
for (int i = 0; i < applicationListeners.length; i++) {
if (listener.equals(applicationListeners[i]))
return;
results[i] = applicationListeners[i];
}
results[applicationListeners.length] = listener;
applicationListeners = results;
}
fireContainerEvent("addApplicationListener", listener);
// FIXME - add instance if already started?
|
public void | addApplicationParameter(org.apache.catalina.deploy.ApplicationParameter parameter)Add a new application parameter for this application.
synchronized (applicationParameters) {
String newName = parameter.getName();
for (int i = 0; i < applicationParameters.length; i++) {
if (newName.equals(applicationParameters[i].getName()) &&
!applicationParameters[i].getOverride())
return;
}
ApplicationParameter results[] =
new ApplicationParameter[applicationParameters.length + 1];
System.arraycopy(applicationParameters, 0, results, 0,
applicationParameters.length);
results[applicationParameters.length] = parameter;
applicationParameters = results;
}
fireContainerEvent("addApplicationParameter", parameter);
|
public void | addChild(org.apache.catalina.Container child)Add a child Container, only if the proposed child is an implementation
of Wrapper.
// Global JspServlet
Wrapper oldJspServlet = null;
if (!(child instanceof Wrapper)) {
throw new IllegalArgumentException
(sm.getString("standardContext.notWrapper"));
}
Wrapper wrapper = (Wrapper) child;
boolean isJspServlet = "jsp".equals(child.getName());
// Allow webapp to override JspServlet inherited from global web.xml.
if (isJspServlet) {
oldJspServlet = (Wrapper) findChild("jsp");
if (oldJspServlet != null) {
removeChild(oldJspServlet);
}
}
String jspFile = wrapper.getJspFile();
if ((jspFile != null) && !jspFile.startsWith("/")) {
if (isServlet22()) {
if(log.isDebugEnabled())
log.debug(sm.getString("standardContext.wrapper.warning",
jspFile));
wrapper.setJspFile("/" + jspFile);
} else {
throw new IllegalArgumentException
(sm.getString("standardContext.wrapper.error", jspFile));
}
}
super.addChild(child);
if (isJspServlet && oldJspServlet != null) {
/*
* The webapp-specific JspServlet inherits all the mappings
* specified in the global web.xml, and may add additional ones.
*/
String[] jspMappings = oldJspServlet.findMappings();
for (int i=0; jspMappings!=null && i<jspMappings.length; i++) {
addServletMapping(jspMappings[i], child.getName());
}
}
|
public void | addConstraint(org.apache.catalina.deploy.SecurityConstraint constraint)Add a security constraint to the set for this web application.
// Validate the proposed constraint
SecurityCollection collections[] = constraint.findCollections();
for (int i = 0; i < collections.length; i++) {
String patterns[] = collections[i].findPatterns();
for (int j = 0; j < patterns.length; j++) {
patterns[j] = adjustURLPattern(patterns[j]);
if (!validateURLPattern(patterns[j]))
throw new IllegalArgumentException
(sm.getString
("standardContext.securityConstraint.pattern",
patterns[j]));
}
}
// Add this constraint to the set for our web application
synchronized (constraints) {
SecurityConstraint results[] =
new SecurityConstraint[constraints.length + 1];
for (int i = 0; i < constraints.length; i++)
results[i] = constraints[i];
results[constraints.length] = constraint;
constraints = results;
}
|
public void | addErrorPage(org.apache.catalina.deploy.ErrorPage errorPage)Add an error page for the specified error or Java exception.
// Validate the input parameters
if (errorPage == null)
throw new IllegalArgumentException
(sm.getString("standardContext.errorPage.required"));
String location = errorPage.getLocation();
if ((location != null) && !location.startsWith("/")) {
if (isServlet22()) {
if(log.isDebugEnabled())
log.debug(sm.getString("standardContext.errorPage.warning",
location));
errorPage.setLocation("/" + location);
} else {
throw new IllegalArgumentException
(sm.getString("standardContext.errorPage.error",
location));
}
}
// Add the specified error page to our internal collections
String exceptionType = errorPage.getExceptionType();
if (exceptionType != null) {
synchronized (exceptionPages) {
exceptionPages.put(exceptionType, errorPage);
}
} else {
synchronized (statusPages) {
if (errorPage.getErrorCode() == 200) {
this.okErrorPage = errorPage;
}
statusPages.put(new Integer(errorPage.getErrorCode()),
errorPage);
}
}
fireContainerEvent("addErrorPage", errorPage);
|
public void | addFilterDef(org.apache.catalina.deploy.FilterDef filterDef)Add a filter definition to this Context.
synchronized (filterDefs) {
filterDefs.put(filterDef.getFilterName(), filterDef);
}
fireContainerEvent("addFilterDef", filterDef);
|
public void | addFilterMap(org.apache.catalina.deploy.FilterMap filterMap)Add a filter mapping to this Context.
// Validate the proposed filter mapping
String filterName = filterMap.getFilterName();
String[] servletNames = filterMap.getServletNames();
String[] urlPatterns = filterMap.getURLPatterns();
if (findFilterDef(filterName) == null)
throw new IllegalArgumentException
(sm.getString("standardContext.filterMap.name", filterName));
if ((servletNames.length == 0) && (urlPatterns.length == 0))
throw new IllegalArgumentException
(sm.getString("standardContext.filterMap.either"));
// FIXME: Older spec revisions may still check this
/*
if ((servletNames.length != 0) && (urlPatterns.length != 0))
throw new IllegalArgumentException
(sm.getString("standardContext.filterMap.either"));
*/
// Because filter-pattern is new in 2.3, no need to adjust
// for 2.2 backwards compatibility
for (int i = 0; i < urlPatterns.length; i++) {
if (!validateURLPattern(urlPatterns[i])) {
throw new IllegalArgumentException
(sm.getString("standardContext.filterMap.pattern",
urlPatterns[i]));
}
}
// Add this filter mapping to our registered set
synchronized (filterMaps) {
FilterMap results[] =new FilterMap[filterMaps.length + 1];
System.arraycopy(filterMaps, 0, results, 0, filterMaps.length);
results[filterMaps.length] = filterMap;
filterMaps = results;
}
fireContainerEvent("addFilterMap", filterMap);
|
public void | addInstanceListener(java.lang.String listener)Add the classname of an InstanceListener to be added to each
Wrapper appended to this Context.
synchronized (instanceListeners) {
String results[] =new String[instanceListeners.length + 1];
for (int i = 0; i < instanceListeners.length; i++)
results[i] = instanceListeners[i];
results[instanceListeners.length] = listener;
instanceListeners = results;
}
fireContainerEvent("addInstanceListener", listener);
|
public void | addJspMapping(java.lang.String pattern)Add the given URL pattern as a jsp-property-group. This maps
resources that match the given pattern so they will be passed
to the JSP container. Though there are other elements in the
property group, we only care about the URL pattern here. The
JSP container will parse the rest.
String servletName = findServletMapping("*.jsp");
if (servletName == null) {
servletName = "jsp";
}
if( findChild(servletName) != null) {
addServletMapping(pattern, servletName, true);
} else {
if(log.isDebugEnabled())
log.debug("Skiping " + pattern + " , no servlet " + servletName);
}
|
public void | addLocaleEncodingMappingParameter(java.lang.String locale, java.lang.String encoding)Add a Locale Encoding Mapping (see Sec 5.4 of Servlet spec 2.4)
getCharsetMapper().addCharsetMappingFromDeploymentDescriptor(locale, encoding);
|
public void | addMessageDestination(org.apache.catalina.deploy.MessageDestination md)Add a message destination for this web application.
synchronized (messageDestinations) {
messageDestinations.put(md.getName(), md);
}
fireContainerEvent("addMessageDestination", md.getName());
|
public void | addMessageDestinationRef(org.apache.catalina.deploy.MessageDestinationRef mdr)Add a message destination reference for this web application.
namingResources.addMessageDestinationRef(mdr);
fireContainerEvent("addMessageDestinationRef", mdr.getName());
|
public void | addMimeMapping(java.lang.String extension, java.lang.String mimeType)Add a new MIME mapping, replacing any existing mapping for
the specified extension.
synchronized (mimeMappings) {
mimeMappings.put(extension, mimeType);
}
fireContainerEvent("addMimeMapping", extension);
|
public void | addNotificationListener(javax.management.NotificationListener listener, javax.management.NotificationFilter filter, java.lang.Object object)
broadcaster.addNotificationListener(listener,filter,object);
|
public void | addParameter(java.lang.String name, java.lang.String value)Add a new context initialization parameter.
// Validate the proposed context initialization parameter
if ((name == null) || (value == null))
throw new IllegalArgumentException
(sm.getString("standardContext.parameter.required"));
if (parameters.get(name) != null)
throw new IllegalArgumentException
(sm.getString("standardContext.parameter.duplicate", name));
// Add this parameter to our defined set
synchronized (parameters) {
parameters.put(name, value);
}
fireContainerEvent("addParameter", name);
|
public void | addRoleMapping(java.lang.String role, java.lang.String link)Add a security role reference for this web application.
synchronized (roleMappings) {
roleMappings.put(role, link);
}
fireContainerEvent("addRoleMapping", role);
|
public void | addSecurityRole(java.lang.String role)Add a new security role for this web application.
synchronized (securityRoles) {
String results[] =new String[securityRoles.length + 1];
for (int i = 0; i < securityRoles.length; i++)
results[i] = securityRoles[i];
results[securityRoles.length] = role;
securityRoles = results;
}
fireContainerEvent("addSecurityRole", role);
|
public void | addServletMapping(java.lang.String pattern, java.lang.String name)Add a new servlet mapping, replacing any existing mapping for
the specified pattern.
addServletMapping(pattern, name, false);
|
public void | addServletMapping(java.lang.String pattern, java.lang.String name, boolean jspWildCard)Add a new servlet mapping, replacing any existing mapping for
the specified pattern.
// Validate the proposed mapping
if (findChild(name) == null)
throw new IllegalArgumentException
(sm.getString("standardContext.servletMap.name", name));
pattern = adjustURLPattern(RequestUtil.URLDecode(pattern));
if (!validateURLPattern(pattern))
throw new IllegalArgumentException
(sm.getString("standardContext.servletMap.pattern", pattern));
// Add this mapping to our registered set
synchronized (servletMappings) {
String name2 = (String) servletMappings.get(pattern);
if (name2 != null) {
// Don't allow more than one servlet on the same pattern
Wrapper wrapper = (Wrapper) findChild(name2);
wrapper.removeMapping(pattern);
mapper.removeWrapper(pattern);
}
servletMappings.put(pattern, name);
}
Wrapper wrapper = (Wrapper) findChild(name);
wrapper.addMapping(pattern);
// Update context mapper
mapper.addWrapper(pattern, wrapper, jspWildCard);
fireContainerEvent("addServletMapping", pattern);
|
public void | addTaglib(java.lang.String uri, java.lang.String location)Add a JSP tag library for the specified URI.
synchronized (taglibs) {
taglibs.put(uri, location);
}
fireContainerEvent("addTaglib", uri);
|
public void | addWatchedResource(java.lang.String name)Add a new watched resource to the set recognized by this Context.
synchronized (watchedResources) {
String results[] = new String[watchedResources.length + 1];
for (int i = 0; i < watchedResources.length; i++)
results[i] = watchedResources[i];
results[watchedResources.length] = name;
watchedResources = results;
}
fireContainerEvent("addWatchedResource", name);
|
public void | addWelcomeFile(java.lang.String name)Add a new welcome file to the set recognized by this Context.
synchronized (welcomeFiles) {
// Welcome files from the application deployment descriptor
// completely replace those from the default conf/web.xml file
if (replaceWelcomeFiles) {
welcomeFiles = new String[0];
setReplaceWelcomeFiles(false);
}
String results[] =new String[welcomeFiles.length + 1];
for (int i = 0; i < welcomeFiles.length; i++)
results[i] = welcomeFiles[i];
results[welcomeFiles.length] = name;
welcomeFiles = results;
}
postWelcomeFiles();
fireContainerEvent("addWelcomeFile", name);
|
public void | addWrapperLifecycle(java.lang.String listener)Add the classname of a LifecycleListener to be added to each
Wrapper appended to this Context.
synchronized (wrapperLifecycles) {
String results[] =new String[wrapperLifecycles.length + 1];
for (int i = 0; i < wrapperLifecycles.length; i++)
results[i] = wrapperLifecycles[i];
results[wrapperLifecycles.length] = listener;
wrapperLifecycles = results;
}
fireContainerEvent("addWrapperLifecycle", listener);
|
public void | addWrapperListener(java.lang.String listener)Add the classname of a ContainerListener to be added to each
Wrapper appended to this Context.
synchronized (wrapperListeners) {
String results[] =new String[wrapperListeners.length + 1];
for (int i = 0; i < wrapperListeners.length; i++)
results[i] = wrapperListeners[i];
results[wrapperListeners.length] = listener;
wrapperListeners = results;
}
fireContainerEvent("addWrapperListener", listener);
|
protected java.lang.String | adjustURLPattern(java.lang.String urlPattern)Adjust the URL pattern to begin with a leading slash, if appropriate
(i.e. we are running a servlet 2.2 application). Otherwise, return
the specified URL pattern unchanged.
if (urlPattern == null)
return (urlPattern);
if (urlPattern.startsWith("/") || urlPattern.startsWith("*."))
return (urlPattern);
if (!isServlet22())
return (urlPattern);
if(log.isDebugEnabled())
log.debug(sm.getString("standardContext.urlPattern.patternWarning",
urlPattern));
return ("/" + urlPattern);
|
private java.lang.ClassLoader | bindThread()Bind current thread, both for CL purposes and for JNDI ENC support
during : startup, shutdown and realoading of the context.
ClassLoader oldContextClassLoader =
Thread.currentThread().getContextClassLoader();
if (getResources() == null)
return oldContextClassLoader;
if (getLoader().getClassLoader() != null) {
Thread.currentThread().setContextClassLoader
(getLoader().getClassLoader());
}
DirContextURLStreamHandler.bind(getResources());
if (isUseNaming()) {
try {
ContextBindings.bindThread(this, this);
} catch (NamingException e) {
// Silent catch, as this is a normal case during the early
// startup stages
}
}
return oldContextClassLoader;
|
private void | cacheContext()
try {
File workDir=new File( getWorkPath() );
File ctxSer=new File( workDir, "_tomcat_context.ser");
FileOutputStream fos=new FileOutputStream( ctxSer );
ObjectOutputStream oos=new ObjectOutputStream( fos );
oos.writeObject(this);
oos.close();
fos.close();
} catch( Throwable t ) {
if(log.isInfoEnabled())
log.info("Error saving context.ser ", t);
}
|
private boolean | copy(java.io.File src, java.io.File dest)Copy a file.
FileInputStream is = null;
FileOutputStream os = null;
try {
is = new FileInputStream(src);
os = new FileOutputStream(dest);
byte[] buf = new byte[4096];
while (true) {
int len = is.read(buf);
if (len < 0)
break;
os.write(buf, 0, len);
}
is.close();
os.close();
} catch (IOException e) {
return false;
} finally {
try {
if (is != null) {
is.close();
}
} catch (Exception e) {
// Ignore
}
try {
if (os != null) {
os.close();
}
} catch (Exception e) {
// Ignore
}
}
return true;
|
public void | create()
init();
|
public javax.management.ObjectName | createObjectName(java.lang.String hostDomain, javax.management.ObjectName parentName)
String onameStr;
StandardHost hst=(StandardHost)getParent();
String pathName=getName();
String hostName=getParent().getName();
String name= "//" + ((hostName==null)? "DEFAULT" : hostName) +
(("".equals(pathName))?"/":pathName );
String suffix=",J2EEApplication=" +
getJ2EEApplication() + ",J2EEServer=" +
getJ2EEServer();
onameStr="j2eeType=WebModule,name=" + name + suffix;
if( log.isDebugEnabled())
log.debug("Registering " + onameStr + " for " + oname);
// default case - no domain explictely set.
if( getDomain() == null ) domain=hst.getDomain();
ObjectName oname=new ObjectName(getDomain() + ":" + onameStr);
return oname;
|
public org.apache.catalina.Wrapper | createWrapper()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.
Wrapper wrapper = null;
if (wrapperClass != null) {
try {
wrapper = (Wrapper) wrapperClass.newInstance();
} catch (Throwable t) {
log.error("createWrapper", t);
return (null);
}
} else {
wrapper = new StandardWrapper();
}
synchronized (instanceListeners) {
for (int i = 0; i < instanceListeners.length; i++) {
try {
Class clazz = Class.forName(instanceListeners[i]);
InstanceListener listener =
(InstanceListener) clazz.newInstance();
wrapper.addInstanceListener(listener);
} catch (Throwable t) {
log.error("createWrapper", t);
return (null);
}
}
}
synchronized (wrapperLifecycles) {
for (int i = 0; i < wrapperLifecycles.length; i++) {
try {
Class clazz = Class.forName(wrapperLifecycles[i]);
LifecycleListener listener =
(LifecycleListener) clazz.newInstance();
if (wrapper instanceof Lifecycle)
((Lifecycle) wrapper).addLifecycleListener(listener);
} catch (Throwable t) {
log.error("createWrapper", t);
return (null);
}
}
}
synchronized (wrapperListeners) {
for (int i = 0; i < wrapperListeners.length; i++) {
try {
Class clazz = Class.forName(wrapperListeners[i]);
ContainerListener listener =
(ContainerListener) clazz.newInstance();
wrapper.addContainerListener(listener);
} catch (Throwable t) {
log.error("createWrapper", t);
return (null);
}
}
}
return (wrapper);
|
public void | destroy()Destroy needs to clean up the context completely.
The problem is that undoing all the config in start() and restoring
a 'fresh' state is impossible. After stop()/destroy()/init()/start()
we should have the same state as if a fresh start was done - i.e
read modified web.xml, etc. This can only be done by completely
removing the context object and remapping a new one, or by cleaning
up everything.
XXX Should this be done in stop() ?
if( oname != null ) {
// Send j2ee.object.deleted notification
Notification notification =
new Notification("j2ee.object.deleted", this.getObjectName(),
sequenceNumber++);
broadcaster.sendNotification(notification);
}
super.destroy();
// Notify our interested LifecycleListeners
lifecycle.fireLifecycleEvent(DESTROY_EVENT, null);
instanceListeners = new String[0];
|
protected java.io.File | engineBase()Return a File object representing the base directory for the
entire servlet container (i.e. the Engine container if present).
String base=System.getProperty("catalina.base");
if( base == null ) {
StandardEngine eng=(StandardEngine)this.getParent().getParent();
base=eng.getBaseDir();
}
return (new File(base));
|
public boolean | filterStart()Configure and initialize the set of filters for this Context.
Return true if all filter initialization completed
successfully, or false otherwise.
if (getLogger().isDebugEnabled())
getLogger().debug("Starting filters");
// Instantiate and record a FilterConfig for each defined filter
boolean ok = true;
synchronized (filterConfigs) {
filterConfigs.clear();
Iterator names = filterDefs.keySet().iterator();
while (names.hasNext()) {
String name = (String) names.next();
if (getLogger().isDebugEnabled())
getLogger().debug(" Starting filter '" + name + "'");
ApplicationFilterConfig filterConfig = null;
try {
filterConfig = new ApplicationFilterConfig
(this, (FilterDef) filterDefs.get(name));
filterConfigs.put(name, filterConfig);
} catch (Throwable t) {
getLogger().error
(sm.getString("standardContext.filterStart", name), t);
ok = false;
}
}
}
return (ok);
|
public boolean | filterStop()Finalize and release the set of filters for this Context.
Return true if all filter finalization completed
successfully, or false otherwise.
if (getLogger().isDebugEnabled())
getLogger().debug("Stopping filters");
// Release all Filter and FilterConfig instances
synchronized (filterConfigs) {
Iterator names = filterConfigs.keySet().iterator();
while (names.hasNext()) {
String name = (String) names.next();
if (getLogger().isDebugEnabled())
getLogger().debug(" Stopping filter '" + name + "'");
ApplicationFilterConfig filterConfig =
(ApplicationFilterConfig) filterConfigs.get(name);
filterConfig.release();
}
filterConfigs.clear();
}
return (true);
|
public java.lang.String[] | findApplicationListeners()Return the set of application listener class names configured
for this application.
return (applicationListeners);
|
public org.apache.catalina.deploy.ApplicationParameter[] | findApplicationParameters()Return the set of application parameters for this application.
return (applicationParameters);
|
public org.apache.catalina.deploy.SecurityConstraint[] | findConstraints()Return the security constraints for this web application.
If there are none, a zero-length array is returned.
return (constraints);
|
public org.apache.catalina.deploy.ErrorPage | findErrorPage(int errorCode)Return the error page entry for the specified HTTP error code,
if any; otherwise return null .
if (errorCode == 200) {
return (okErrorPage);
} else {
return ((ErrorPage) statusPages.get(new Integer(errorCode)));
}
|
public org.apache.catalina.deploy.ErrorPage | findErrorPage(java.lang.String exceptionType)Return the error page entry for the specified Java exception type,
if any; otherwise return null .
synchronized (exceptionPages) {
return ((ErrorPage) exceptionPages.get(exceptionType));
}
|
public org.apache.catalina.deploy.ErrorPage[] | findErrorPages()Return the set of defined error pages for all specified error codes
and exception types.
synchronized(exceptionPages) {
synchronized(statusPages) {
ErrorPage results1[] = new ErrorPage[exceptionPages.size()];
results1 =
(ErrorPage[]) exceptionPages.values().toArray(results1);
ErrorPage results2[] = new ErrorPage[statusPages.size()];
results2 =
(ErrorPage[]) statusPages.values().toArray(results2);
ErrorPage results[] =
new ErrorPage[results1.length + results2.length];
for (int i = 0; i < results1.length; i++)
results[i] = results1[i];
for (int i = results1.length; i < results.length; i++)
results[i] = results2[i - results1.length];
return (results);
}
}
|
public javax.servlet.FilterConfig | findFilterConfig(java.lang.String name)Find and return the initialized FilterConfig for the
specified filter name, if any; otherwise return null .
return ((FilterConfig) filterConfigs.get(name));
|
public org.apache.catalina.deploy.FilterDef | findFilterDef(java.lang.String filterName)Return the filter definition for the specified filter name, if any;
otherwise return null .
synchronized (filterDefs) {
return ((FilterDef) filterDefs.get(filterName));
}
|
public org.apache.catalina.deploy.FilterDef[] | findFilterDefs()Return the set of defined filters for this Context.
synchronized (filterDefs) {
FilterDef results[] = new FilterDef[filterDefs.size()];
return ((FilterDef[]) filterDefs.values().toArray(results));
}
|
public org.apache.catalina.deploy.FilterMap[] | findFilterMaps()Return the set of filter mappings for this Context.
return (filterMaps);
|
public java.lang.String[] | findInstanceListeners()Return the set of InstanceListener classes that will be added to
newly created Wrappers automatically.
return (instanceListeners);
|
public org.apache.catalina.Context | findMappingObject()FIXME: Fooling introspection ...
return (Context) getMappingObject();
|
public org.apache.catalina.deploy.MessageDestination | findMessageDestination(java.lang.String name)Return the message destination with the specified name, if any;
otherwise, return null .
synchronized (messageDestinations) {
return ((MessageDestination) messageDestinations.get(name));
}
|
public org.apache.catalina.deploy.MessageDestinationRef | findMessageDestinationRef(java.lang.String name)Return the message destination ref with the specified name, if any;
otherwise, return null .
return namingResources.findMessageDestinationRef(name);
|
public org.apache.catalina.deploy.MessageDestinationRef[] | findMessageDestinationRefs()Return the set of defined message destination refs for this web
application. If none have been defined, a zero-length array
is returned.
return namingResources.findMessageDestinationRefs();
|
public org.apache.catalina.deploy.MessageDestination[] | findMessageDestinations()Return the set of defined message destinations for this web
application. If none have been defined, a zero-length array
is returned.
synchronized (messageDestinations) {
MessageDestination results[] =
new MessageDestination[messageDestinations.size()];
return ((MessageDestination[])
messageDestinations.values().toArray(results));
}
|
public java.lang.String | findMimeMapping(java.lang.String extension)Return the MIME type to which the specified extension is mapped,
if any; otherwise return null .
return ((String) mimeMappings.get(extension));
|
public java.lang.String[] | findMimeMappings()Return the extensions for which MIME mappings are defined. If there
are none, a zero-length array is returned.
synchronized (mimeMappings) {
String results[] = new String[mimeMappings.size()];
return
((String[]) mimeMappings.keySet().toArray(results));
}
|
public java.lang.String | findParameter(java.lang.String name)Return the value for the specified context initialization
parameter name, if any; otherwise return null .
synchronized (parameters) {
return ((String) parameters.get(name));
}
|
public java.lang.String[] | findParameters()Return the names of all defined context initialization parameters
for this Context. If no parameters are defined, a zero-length
array is returned.
synchronized (parameters) {
String results[] = new String[parameters.size()];
return ((String[]) parameters.keySet().toArray(results));
}
|
public java.lang.String | findRoleMapping(java.lang.String role)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.
String realRole = null;
synchronized (roleMappings) {
realRole = (String) roleMappings.get(role);
}
if (realRole != null)
return (realRole);
else
return (role);
|
public boolean | findSecurityRole(java.lang.String role)Return true if the specified security role is defined
for this application; otherwise return false .
synchronized (securityRoles) {
for (int i = 0; i < securityRoles.length; i++) {
if (role.equals(securityRoles[i]))
return (true);
}
}
return (false);
|
public java.lang.String[] | findSecurityRoles()Return the security roles defined for this application. If none
have been defined, a zero-length array is returned.
return (securityRoles);
|
public java.lang.String | findServletMapping(java.lang.String pattern)Return the servlet name mapped by the specified pattern (if any);
otherwise return null .
synchronized (servletMappings) {
return ((String) servletMappings.get(pattern));
}
|
public java.lang.String[] | findServletMappings()Return the patterns of all defined servlet mappings for this
Context. If no mappings are defined, a zero-length array is returned.
synchronized (servletMappings) {
String results[] = new String[servletMappings.size()];
return
((String[]) servletMappings.keySet().toArray(results));
}
|
public javax.naming.directory.DirContext | findStaticResources()Return the naming resources associated with this web application.
FIXME: Fooling introspection ...
return getResources();
|
public java.lang.String | findStatusPage(int status)Return the context-relative URI of the error page for the specified
HTTP status code, if any; otherwise return null .
return ((String) statusPages.get(new Integer(status)));
|
public int[] | findStatusPages()Return the set of HTTP status codes for which error pages have
been specified. If none are specified, a zero-length array
is returned.
synchronized (statusPages) {
int results[] = new int[statusPages.size()];
Iterator elements = statusPages.keySet().iterator();
int i = 0;
while (elements.hasNext())
results[i++] = ((Integer) elements.next()).intValue();
return (results);
}
|
public java.lang.String | findTaglib(java.lang.String uri)Return the tag library descriptor location for the specified taglib
URI, if any; otherwise, return null .
synchronized (taglibs) {
return ((String) taglibs.get(uri));
}
|
public java.lang.String[] | findTaglibs()Return the URIs of all tag libraries for which a tag library
descriptor location has been specified. If none are specified,
a zero-length array is returned.
synchronized (taglibs) {
String results[] = new String[taglibs.size()];
return ((String[]) taglibs.keySet().toArray(results));
}
|
public java.lang.String[] | findWatchedResources()Return the set of watched resources for this Context. If none are
defined, a zero length array will be returned.
return watchedResources;
|
public boolean | findWelcomeFile(java.lang.String name)Return true if the specified welcome file is defined
for this Context; otherwise return false .
synchronized (welcomeFiles) {
for (int i = 0; i < welcomeFiles.length; i++) {
if (name.equals(welcomeFiles[i]))
return (true);
}
}
return (false);
|
public java.lang.String[] | findWelcomeFiles()Return the set of welcome files defined for this Context. If none are
defined, a zero-length array is returned.
return (welcomeFiles);
|
public java.lang.String[] | findWrapperLifecycles()Return the set of LifecycleListener classes that will be added to
newly created Wrappers automatically.
return (wrapperLifecycles);
|
public java.lang.String[] | findWrapperListeners()Return the set of ContainerListener classes that will be added to
newly created Wrappers automatically.
return (wrapperListeners);
|
public java.lang.String | getAltDDName()Return the alternate Deployment Descriptor name.
return altDDName;
|
public org.apache.AnnotationProcessor | getAnnotationProcessor()
// ----------------------------------------------------- Context Properties
return annotationProcessor;
|
public boolean | getAntiJARLocking()Return the antiJARLocking flag for this Context.
return (this.antiJARLocking);
|
public boolean | getAntiResourceLocking()Return the antiResourceLocking flag for this Context.
return (this.antiResourceLocking);
|
protected java.lang.String | getAppBase()Get app base.
String appBase = null;
Container container = this;
while (container != null) {
if (container instanceof Host)
break;
container = container.getParent();
}
if (container != null) {
appBase = ((Host) container).getAppBase();
}
return appBase;
|
public java.lang.Object[] | getApplicationEventListeners()Return the set of initialized application event listener objects,
in the order they were specified in the web application deployment
descriptor, for this application.
return (applicationEventListenersObjects);
|
public java.lang.Object[] | getApplicationLifecycleListeners()Return the set of initialized application lifecycle listener objects,
in the order they were specified in the web application deployment
descriptor, for this application.
return (applicationLifecycleListenersObjects);
|
public boolean | getAvailable()Return the application available flag for this Context.
return (this.available);
|
protected java.lang.String | getBasePath()Get base path.
String docBase = null;
Container container = this;
while (container != null) {
if (container instanceof Host)
break;
container = container.getParent();
}
File file = new File(getDocBase());
if (!file.isAbsolute()) {
if (container == null) {
docBase = (new File(engineBase(), getDocBase())).getPath();
} else {
// Use the "appBase" property of this container
String appBase = ((Host) container).getAppBase();
file = new File(appBase);
if (!file.isAbsolute())
file = new File(engineBase(), appBase);
docBase = (new File(file, getDocBase())).getPath();
}
} else {
docBase = file.getPath();
}
return docBase;
|
public int | getCacheMaxSize()Return the maximum size of the cache in KB.
return cacheMaxSize;
|
public int | getCacheTTL()Get cache TTL.
return cacheTTL;
|
public org.apache.catalina.util.CharsetMapper | getCharsetMapper()Return the Locale to character set mapper for this Context.
// Create a mapper the first time it is requested
if (this.charsetMapper == null) {
try {
Class clazz = Class.forName(charsetMapperClass);
this.charsetMapper =
(CharsetMapper) clazz.newInstance();
} catch (Throwable t) {
this.charsetMapper = new CharsetMapper();
}
}
return (this.charsetMapper);
|
public java.lang.String | getCharsetMapperClass()Return the Locale to character set mapper class for this Context.
return (this.charsetMapperClass);
|
public java.lang.String | getCompilerClasspath()Return the compiler classpath.
return compilerClasspath;
|
public java.io.File | getConfigBase()Get config base.
File configBase =
new File(System.getProperty("catalina.base"), "conf");
if (!configBase.exists()) {
return null;
}
Container container = this;
Container host = null;
Container engine = null;
while (container != null) {
if (container instanceof Host)
host = container;
if (container instanceof Engine)
engine = container;
container = container.getParent();
}
if (engine != null) {
configBase = new File(configBase, engine.getName());
}
if (host != null) {
configBase = new File(configBase, host.getName());
}
if (saveConfig) {
configBase.mkdirs();
}
return configBase;
|
public java.lang.String | getConfigFile()Return the path to a file to save this Context information.
return (this.configFile);
|
public boolean | getConfigured()Return the "correctly configured" flag for this Context.
return (this.configured);
|
public boolean | getCookies()Return the "use cookies for session ids" flag.
return (this.cookies);
|
public boolean | getCrossContext()Return the "allow crossing servlet contexts" flag.
return (this.crossContext);
|
protected java.lang.String | getDefaultConfigFile()Given a context path, get the config file name.
String basename = null;
String path = getPath();
if (path.equals("")) {
basename = "ROOT";
} else {
basename = path.substring(1).replace('/", '#");
}
return (basename + ".xml");
|
public java.lang.String | getDefaultContextXml()
return defaultContextXml;
|
public java.lang.String | getDefaultWebXml()
return defaultWebXml;
|
public boolean | getDelegate()Return the "follow standard delegation model" flag used to configure
our ClassLoader.
return (this.delegate);
|
public java.lang.String | getDeploymentDescriptor()JSR77 deploymentDescriptor attribute
InputStream stream = null;
ServletContext servletContext = getServletContext();
if (servletContext != null) {
stream = servletContext.getResourceAsStream(
org.apache.catalina.startup.Constants.ApplicationWebXml);
}
if (stream == null) {
return "";
}
BufferedReader br = new BufferedReader(
new InputStreamReader(stream));
StringBuffer sb = new StringBuffer();
String strRead = "";
try {
while (strRead != null) {
sb.append(strRead);
strRead = br.readLine();
}
} catch (IOException e) {
return "";
}
return sb.toString();
|
public java.lang.String | getDisplayName()Return the display name of this web application.
return (this.displayName);
|
public boolean | getDistributable()Return the distributable flag for this web application.
return (this.distributable);
|
public java.lang.String | getDocBase()Return the document root for this Context. This can be an absolute
pathname, a relative pathname, or a URL.
return (this.docBase);
|
public java.lang.String | getEncodedPath()
return encodedPath;
|
public java.lang.String | getEngineName()
if( engineName != null ) return engineName;
return domain;
|
public java.lang.String | getHostname()
Container parentHost = getParent();
if (parentHost != null) {
hostName = parentHost.getName();
}
if ((hostName == null) || (hostName.length() < 1))
hostName = "_";
return hostName;
|
public boolean | getIgnoreAnnotations()Return the boolean on the annotations parsing.
return this.ignoreAnnotations;
|
public java.lang.String | getInfo()Return descriptive information about this Container implementation and
the corresponding version number, in the format
<description>/<version> .
return (info);
|
public java.lang.String | getJ2EEApplication()
return j2EEApplication;
|
public java.lang.String | getJ2EEServer()
return j2EEServer;
|
public java.lang.String[] | getJavaVMs()
return javaVMs;
|
public org.apache.catalina.deploy.LoginConfig | getLoginConfig()Return the login configuration descriptor for this web application.
return (this.loginConfig);
|
public org.apache.tomcat.util.http.mapper.Mapper | getMapper()Get the mapper associated with the context.
return (mapper);
|
public NamingContextListener | getNamingContextListener()Naming context listener accessor.
return namingContextListener;
|
private java.lang.String | getNamingContextName()Get naming context full name.
if (namingContextName == null) {
Container parent = getParent();
if (parent == null) {
namingContextName = getName();
} else {
Stack stk = new Stack();
StringBuffer buff = new StringBuffer();
while (parent != null) {
stk.push(parent.getName());
parent = parent.getParent();
}
while (!stk.empty()) {
buff.append("/" + stk.pop());
}
buff.append(getName());
namingContextName = buff.toString();
}
}
return namingContextName;
|
public org.apache.catalina.deploy.NamingResources | getNamingResources()Return the naming resources associated with this web application.
if (namingResources == null) {
setNamingResources(new NamingResources());
}
return (namingResources);
|
public javax.management.MBeanNotificationInfo[] | getNotificationInfo()
// FIXME: i18n
if(notificationInfo == null) {
notificationInfo = new MBeanNotificationInfo[]{
new MBeanNotificationInfo(new String[] {
"j2ee.object.created"},
Notification.class.getName(),
"web application is created"
),
new MBeanNotificationInfo(new String[] {
"j2ee.state.starting"},
Notification.class.getName(),
"change web application is starting"
),
new MBeanNotificationInfo(new String[] {
"j2ee.state.running"},
Notification.class.getName(),
"web application is running"
),
new MBeanNotificationInfo(new String[] {
"j2ee.state.stopped"},
Notification.class.getName(),
"web application start to stopped"
),
new MBeanNotificationInfo(new String[] {
"j2ee.object.stopped"},
Notification.class.getName(),
"web application is stopped"
),
new MBeanNotificationInfo(new String[] {
"j2ee.object.deleted"},
Notification.class.getName(),
"web application is deleted"
)
};
}
return notificationInfo;
|
public java.lang.String | getOriginalDocBase()Return the original document root for this Context. This can be an absolute
pathname, a relative pathname, or a URL.
Is only set as deployment has change docRoot!
return (this.originalDocBase);
|
public boolean | getOverride()Return the DefaultContext override flag for this web application.
return (this.override);
|
public java.lang.ClassLoader | getParentClassLoader()Return the parent class loader (if any) for this web application.
This call is meaningful only after a Loader has
been configured.
if (parentClassLoader != null)
return (parentClassLoader);
if (getPrivileged()) {
return this.getClass().getClassLoader();
} else if (parent != null) {
return (parent.getParentClassLoader());
}
return (ClassLoader.getSystemClassLoader());
|
public javax.management.ObjectName | getParentName()
// "Life" update
String path=oname.getKeyProperty("name");
if( path == null ) {
log.error( "No name attribute " +name );
return null;
}
if( ! path.startsWith( "//")) {
log.error("Invalid name " + name);
}
path=path.substring(2);
int delim=path.indexOf( "/" );
hostName="localhost"; // Should be default...
if( delim > 0 ) {
hostName=path.substring(0, delim);
path = path.substring(delim);
if (path.equals("/")) {
this.setName("");
} else {
this.setName(path);
}
} else {
if(log.isDebugEnabled())
log.debug("Setting path " + path );
this.setName( path );
}
// XXX The service and domain should be the same.
String parentDomain=getEngineName();
if( parentDomain == null ) parentDomain=domain;
ObjectName parentName=new ObjectName( parentDomain + ":" +
"type=Host,host=" + hostName);
return parentName;
|
public java.lang.String | getPath()Return the context path for this Context.
return (getName());
|
public boolean | getPaused()Return the request processing paused flag for this Context.
return (this.paused);
|
public boolean | getPrivileged()Return the privileged flag for this web application.
return (this.privileged);
|
public boolean | getProcessTlds()Returns the processTlds attribute value.
return processTlds;
|
public long | getProcessingTime()Gets the cumulative processing times of all servlets in this
StandardContext.
long result = 0;
Container[] children = findChildren();
if (children != null) {
for( int i=0; i< children.length; i++ ) {
result += ((StandardWrapper)children[i]).getProcessingTime();
}
}
return result;
|
public java.lang.String | getPublicId()Return the public identifier of the deployment descriptor DTD that is
currently being parsed.
return (this.publicId);
|
public boolean | getReloadable()Return the reloadable flag for this web application.
return (this.reloadable);
|
public java.lang.String | getServer()
return server;
|
public javax.servlet.ServletContext | getServletContext()Return the servlet context for which this Context is a facade.
if (context == null) {
context = new ApplicationContext(getBasePath(), this);
if (altDDName != null)
context.setAttribute(Globals.ALT_DD_ATTR,altDDName);
}
return (context.getFacade());
|
public java.lang.String[] | getServlets()JSR77 servlets attribute
String[] result = null;
Container[] children = findChildren();
if (children != null) {
result = new String[children.length];
for( int i=0; i< children.length; i++ ) {
result[i] = ((StandardWrapper)children[i]).getObjectName();
}
}
return result;
|
public int | getSessionTimeout()Return the default session timeout (in minutes) for this
web application.
return (this.sessionTimeout);
|
public long | getStartTime()Gets the time this context was started.
return startTime;
|
public long | getStartupTime()Gets the time (in milliseconds) it took to start this context.
return startupTime;
|
public int | getState()
if( started ) {
return 1; // RUNNING
}
if( initialized ) {
return 0; // starting ?
}
if( ! available ) {
return 4; //FAILED
}
// 2 - STOPPING
return 3; // STOPPED
|
public javax.naming.directory.DirContext | getStaticResources()Return the naming resources associated with this web application.
return getResources();
|
public boolean | getSwallowOutput()Return the value of the swallowOutput flag.
return (this.swallowOutput);
|
public boolean | getTldNamespaceAware()Get the server.xml attribute's xmlNamespaceAware.
return tldNamespaceAware;
|
public long | getTldScanTime()
return tldScanTime;
|
public boolean | getTldValidation()Get the server.xml attribute's webXmlValidation.
return tldValidation;
|
public long | getUnloadDelay()Return the value of the unloadDelay flag.
return (this.unloadDelay);
|
public boolean | getUnpackWAR()Unpack WAR flag accessor.
return (unpackWAR);
|
public java.lang.String[] | getWelcomeFiles()Return the naming resources associated with this web application.
return findWelcomeFiles();
|
public java.lang.String | getWorkDir()Return the work directory for this Context.
return (this.workDir);
|
public java.lang.String | getWorkPath()Get the absolute path to the work dir.
To avoid duplication.
if (getWorkDir() == null) {
return null;
}
File workDir = new File(getWorkDir());
if (!workDir.isAbsolute()) {
File catalinaHome = engineBase();
String catalinaHomePath = null;
try {
catalinaHomePath = catalinaHome.getCanonicalPath();
workDir = new File(catalinaHomePath,
getWorkDir());
} catch (IOException e) {
log.warn("Exception obtaining work path for " + getPath());
}
}
return workDir.getAbsolutePath();
|
public java.lang.String | getWrapperClass()Return the Java class name of the Wrapper implementation used
for servlets registered in this Context.
return (this.wrapperClassName);
|
public boolean | getXmlNamespaceAware()Get the server.xml attribute's xmlNamespaceAware.
return webXmlNamespaceAware;
|
public boolean | getXmlValidation()Get the server.xml attribute's xmlValidation.
return webXmlValidation;
|
public void | init()
if( this.getParent() == null ) {
ObjectName parentName=getParentName();
if( ! mserver.isRegistered(parentName)) {
if(log.isDebugEnabled())
log.debug("No host, creating one " + parentName);
StandardHost host=new StandardHost();
host.setName(hostName);
host.setAutoDeploy(false);
Registry.getRegistry(null, null)
.registerComponent(host, parentName, null);
// We could do it the hard way...
//mserver.invoke(parentName, "init", new Object[] {}, new String[] {} );
// or same thing easier:
host.init();
}
// Add the main configuration listener
LifecycleListener config = null;
try {
String configClassName = null;
try {
configClassName = String.valueOf(mserver.getAttribute(parentName, "configClass"));
} catch (AttributeNotFoundException e) {
// Ignore, it's normal a host may not have this optional attribute
}
if (configClassName != null) {
Class clazz = Class.forName(configClassName);
config = (LifecycleListener) clazz.newInstance();
} else {
config = new ContextConfig();
}
} catch (Exception e) {
log.warn("Error creating ContextConfig for " + parentName, e);
throw e;
}
this.addLifecycleListener(config);
if (log.isDebugEnabled()) {
log.debug("AddChild " + parentName + " " + this);
}
try {
mserver.invoke(parentName, "addChild", new Object[] { this },
new String[] {"org.apache.catalina.Container"});
} catch (Exception e) {
destroy();
throw e;
}
// It's possible that addChild may have started us
if( initialized ) {
return;
}
}
super.init();
// Notify our interested LifecycleListeners
lifecycle.fireLifecycleEvent(INIT_EVENT, null);
// Send j2ee.state.starting notification
if (this.getObjectName() != null) {
Notification notification = new Notification("j2ee.state.starting",
this.getObjectName(),
sequenceNumber++);
broadcaster.sendNotification(notification);
}
|
public boolean | isAllowLinking()Is linking allowed.
return allowLinking;
|
public boolean | isCachingAllowed()Is caching allowed ?
return cachingAllowed;
|
public boolean | isCaseSensitive()Is case sensitive ?
return caseSensitive;
|
public boolean | isEventProvider()
return false;
|
public boolean | isFilesystemBased()Returns true if the resources associated with this context are
filesystem based.
return (filesystemBased);
|
public boolean | isLazy()
return lazy;
|
public boolean | isReplaceWelcomeFiles()Return the "replace welcome files" property.
return (this.replaceWelcomeFiles);
|
public boolean | isSaveConfig()Save config ?
return saveConfig;
|
protected boolean | isServlet22()Are we processing a version 2.2 deployment descriptor?
if (this.publicId == null)
return (false);
if (this.publicId.equals
(org.apache.catalina.startup.Constants.WebDtdPublicId_22))
return (true);
else
return (false);
|
public boolean | isStateManageable()Support for "stateManageable" JSR77
return true;
|
public boolean | isStatisticsProvider()
return false;
|
public boolean | isUseNaming()Returns true if the internal naming support is used.
return (useNaming);
|
public boolean | listenerStart()Configure the set of instantiated application event listeners
for this Context. Return true if all listeners wre
initialized successfully, or false otherwise.
if (log.isDebugEnabled())
log.debug("Configuring application event listeners");
// Instantiate the required listeners
ClassLoader loader = getLoader().getClassLoader();
String listeners[] = findApplicationListeners();
Object results[] = new Object[listeners.length];
boolean ok = true;
for (int i = 0; i < results.length; i++) {
if (getLogger().isDebugEnabled())
getLogger().debug(" Configuring event listener class '" +
listeners[i] + "'");
try {
Class clazz = loader.loadClass(listeners[i]);
results[i] = clazz.newInstance();
// Annotation processing
if (!getIgnoreAnnotations()) {
getAnnotationProcessor().processAnnotations(results[i]);
getAnnotationProcessor().postConstruct(results[i]);
}
} catch (Throwable t) {
getLogger().error
(sm.getString("standardContext.applicationListener",
listeners[i]), t);
ok = false;
}
}
if (!ok) {
getLogger().error(sm.getString("standardContext.applicationSkipped"));
return (false);
}
// Sort listeners in two arrays
ArrayList eventListeners = new ArrayList();
ArrayList lifecycleListeners = new ArrayList();
for (int i = 0; i < results.length; i++) {
if ((results[i] instanceof ServletContextAttributeListener)
|| (results[i] instanceof ServletRequestAttributeListener)
|| (results[i] instanceof ServletRequestListener)
|| (results[i] instanceof HttpSessionAttributeListener)) {
eventListeners.add(results[i]);
}
if ((results[i] instanceof ServletContextListener)
|| (results[i] instanceof HttpSessionListener)) {
lifecycleListeners.add(results[i]);
}
}
setApplicationEventListeners(eventListeners.toArray());
setApplicationLifecycleListeners(lifecycleListeners.toArray());
// Send application start events
if (getLogger().isDebugEnabled())
getLogger().debug("Sending application start events");
Object instances[] = getApplicationLifecycleListeners();
if (instances == null)
return (ok);
ServletContextEvent event =
new ServletContextEvent(getServletContext());
for (int i = 0; i < instances.length; i++) {
if (instances[i] == null)
continue;
if (!(instances[i] instanceof ServletContextListener))
continue;
ServletContextListener listener =
(ServletContextListener) instances[i];
try {
fireContainerEvent("beforeContextInitialized", listener);
listener.contextInitialized(event);
fireContainerEvent("afterContextInitialized", listener);
} catch (Throwable t) {
fireContainerEvent("afterContextInitialized", listener);
getLogger().error
(sm.getString("standardContext.listenerStart",
instances[i].getClass().getName()), t);
ok = false;
}
}
return (ok);
|
public boolean | listenerStop()Send an application stop event to all interested listeners.
Return true if all events were sent successfully,
or false otherwise.
if (log.isDebugEnabled())
log.debug("Sending application stop events");
boolean ok = true;
Object listeners[] = getApplicationLifecycleListeners();
if (listeners != null) {
ServletContextEvent event =
new ServletContextEvent(getServletContext());
for (int i = 0; i < listeners.length; i++) {
int j = (listeners.length - 1) - i;
if (listeners[j] == null)
continue;
if (listeners[j] instanceof ServletContextListener) {
ServletContextListener listener =
(ServletContextListener) listeners[j];
try {
fireContainerEvent("beforeContextDestroyed", listener);
listener.contextDestroyed(event);
fireContainerEvent("afterContextDestroyed", listener);
} catch (Throwable t) {
fireContainerEvent("afterContextDestroyed", listener);
getLogger().error
(sm.getString("standardContext.listenerStop",
listeners[j].getClass().getName()), t);
ok = false;
}
}
// Annotation processing
if (!getIgnoreAnnotations()) {
try {
getAnnotationProcessor().preDestroy(listeners[j]);
} catch (Throwable t) {
getLogger().error
(sm.getString("standardContext.listenerStop",
listeners[j].getClass().getName()), t);
ok = false;
}
}
}
}
// Annotation processing
listeners = getApplicationEventListeners();
if (!getIgnoreAnnotations() && listeners != null) {
for (int i = 0; i < listeners.length; i++) {
int j = (listeners.length - 1) - i;
if (listeners[j] == null)
continue;
try {
getAnnotationProcessor().preDestroy(listeners[j]);
} catch (Throwable t) {
getLogger().error
(sm.getString("standardContext.listenerStop",
listeners[j].getClass().getName()), t);
ok = false;
}
}
}
setApplicationEventListeners(null);
setApplicationLifecycleListeners(null);
return (ok);
|
public void | loadOnStartup(org.apache.catalina.Container[] children)Load and initialize all servlets marked "load on startup" in the
web application deployment descriptor.
// Collect "load on startup" servlets that need to be initialized
TreeMap map = new TreeMap();
for (int i = 0; i < children.length; i++) {
Wrapper wrapper = (Wrapper) children[i];
int loadOnStartup = wrapper.getLoadOnStartup();
if (loadOnStartup < 0)
continue;
Integer key = new Integer(loadOnStartup);
ArrayList list = (ArrayList) map.get(key);
if (list == null) {
list = new ArrayList();
map.put(key, list);
}
list.add(wrapper);
}
// Load the collected "load on startup" servlets
Iterator keys = map.keySet().iterator();
while (keys.hasNext()) {
Integer key = (Integer) keys.next();
ArrayList list = (ArrayList) map.get(key);
Iterator wrappers = list.iterator();
while (wrappers.hasNext()) {
Wrapper wrapper = (Wrapper) wrappers.next();
try {
wrapper.load();
} catch (ServletException e) {
getLogger().error(sm.getString("standardWrapper.loadException",
getName()), StandardWrapper.getRootCause(e));
// NOTE: load errors (including a servlet that throws
// UnavailableException from tht init() method) are NOT
// fatal to application startup
}
}
}
|
private void | postResources()Post a copy of our web application resources as a servlet context
attribute.
getServletContext().setAttribute
(Globals.RESOURCES_ATTR, getResources());
|
private void | postWelcomeFiles()Post a copy of our current list of welcome files as a servlet context
attribute, so that the default servlet can find them.
getServletContext().setAttribute("org.apache.catalina.WELCOME_FILES",
welcomeFiles);
|
private void | postWorkDirectory()Set the appropriate context attribute for our work directory.
// Acquire (or calculate) the work directory path
String workDir = getWorkDir();
if (workDir == null) {
// Retrieve our parent (normally a host) name
String hostName = null;
String engineName = null;
String hostWorkDir = null;
Container parentHost = getParent();
if (parentHost != null) {
hostName = parentHost.getName();
if (parentHost instanceof StandardHost) {
hostWorkDir = ((StandardHost)parentHost).getWorkDir();
}
Container parentEngine = parentHost.getParent();
if (parentEngine != null) {
engineName = parentEngine.getName();
}
}
if ((hostName == null) || (hostName.length() < 1))
hostName = "_";
if ((engineName == null) || (engineName.length() < 1))
engineName = "_";
String temp = getPath();
if (temp.startsWith("/"))
temp = temp.substring(1);
temp = temp.replace('/", '_");
temp = temp.replace('\\", '_");
if (temp.length() < 1)
temp = "_";
if (hostWorkDir != null ) {
workDir = hostWorkDir + File.separator + temp;
} else {
workDir = "work" + File.separator + engineName +
File.separator + hostName + File.separator + temp;
}
setWorkDir(workDir);
}
// Create this directory if necessary
File dir = new File(workDir);
if (!dir.isAbsolute()) {
File catalinaHome = engineBase();
String catalinaHomePath = null;
try {
catalinaHomePath = catalinaHome.getCanonicalPath();
dir = new File(catalinaHomePath, workDir);
} catch (IOException e) {
}
}
dir.mkdirs();
// Set the appropriate servlet context attribute
getServletContext().setAttribute(Globals.WORK_DIR_ATTR, dir);
if (getServletContext() instanceof ApplicationContext)
((ApplicationContext) getServletContext()).setAttributeReadOnly
(Globals.WORK_DIR_ATTR);
|
public void | preDeregister()
if( started ) {
try {
stop();
} catch( Exception ex ) {
log.error( "error stopping ", ex);
}
}
|
public javax.management.ObjectName | preRegister(javax.management.MBeanServer server, javax.management.ObjectName name)There are 2 cases:
1.The context is created and registered by internal APIS
2. The context is created by JMX, and it'll self-register.
if( oname != null ) {
//log.info( "Already registered " + oname + " " + name);
// Temporary - /admin uses the old names
return name;
}
ObjectName result=super.preRegister(server,name);
return name;
|
private void | preRegisterJMX()
try {
StandardHost host = (StandardHost) getParent();
if ((oname == null)
|| (oname.getKeyProperty("j2eeType") == null)) {
oname = createObjectName(host.getDomain(), host.getJmxName());
controller = oname;
}
} catch(Exception ex) {
if(log.isInfoEnabled())
log.info("Error registering ctx with jmx " + this + " " +
oname + " " + ex.toString(), ex );
}
|
protected void | processTlds()Processes TLDs.
TldConfig tldConfig = new TldConfig();
tldConfig.setContext(this);
// (1) check if the attribute has been defined
// on the context element.
tldConfig.setTldValidation(tldValidation);
tldConfig.setTldNamespaceAware(tldNamespaceAware);
// (2) if the attribute wasn't defined on the context
// try the host.
if (!tldValidation) {
tldConfig.setTldValidation
(((StandardHost) getParent()).getXmlValidation());
}
if (!tldNamespaceAware) {
tldConfig.setTldNamespaceAware
(((StandardHost) getParent()).getXmlNamespaceAware());
}
try {
tldConfig.execute();
} catch (Exception ex) {
log.error("Error reading tld listeners "
+ ex.toString(), ex);
}
|
private void | registerJMX()
try {
if (log.isDebugEnabled()) {
log.debug("Checking for " + oname );
}
if(! Registry.getRegistry(null, null)
.getMBeanServer().isRegistered(oname)) {
controller = oname;
Registry.getRegistry(null, null)
.registerComponent(this, oname, null);
// Send j2ee.object.created notification
if (this.getObjectName() != null) {
Notification notification = new Notification(
"j2ee.object.created",
this.getObjectName(),
sequenceNumber++);
broadcaster.sendNotification(notification);
}
}
Container children[] = findChildren();
for (int i=0; children!=null && i<children.length; i++) {
((StandardWrapper)children[i]).registerJMX( this );
}
} catch (Exception ex) {
if(log.isInfoEnabled())
log.info("Error registering wrapper with jmx " + this + " " +
oname + " " + ex.toString(), ex );
}
|
public synchronized void | reload()Reload this web application, if reloading is supported.
IMPLEMENTATION NOTE: This method is designed to deal with
reloads required by changes to classes in the underlying repositories
of our class loader. It does not handle changes to the web application
deployment descriptor. If that has occurred, you should stop this
Context and create (and start) a new Context instance instead.
// Validate our current component state
if (!started)
throw new IllegalStateException
(sm.getString("containerBase.notStarted", logName()));
// Make sure reloading is enabled
// if (!reloadable)
// throw new IllegalStateException
// (sm.getString("standardContext.notReloadable"));
if(log.isInfoEnabled())
log.info(sm.getString("standardContext.reloadingStarted"));
// Stop accepting requests temporarily
setPaused(true);
try {
stop();
} catch (LifecycleException e) {
log.error(sm.getString("standardContext.stoppingContext"), e);
}
try {
start();
} catch (LifecycleException e) {
log.error(sm.getString("standardContext.startingContext"), e);
}
setPaused(false);
|
public void | removeApplicationListener(java.lang.String listener)Remove the specified application listener class from the set of
listeners for this application.
synchronized (applicationListeners) {
// Make sure this welcome file is currently present
int n = -1;
for (int i = 0; i < applicationListeners.length; i++) {
if (applicationListeners[i].equals(listener)) {
n = i;
break;
}
}
if (n < 0)
return;
// Remove the specified constraint
int j = 0;
String results[] = new String[applicationListeners.length - 1];
for (int i = 0; i < applicationListeners.length; i++) {
if (i != n)
results[j++] = applicationListeners[i];
}
applicationListeners = results;
}
// Inform interested listeners
fireContainerEvent("removeApplicationListener", listener);
// FIXME - behavior if already started?
|
public void | removeApplicationParameter(java.lang.String name)Remove the application parameter with the specified name from
the set for this application.
synchronized (applicationParameters) {
// Make sure this parameter is currently present
int n = -1;
for (int i = 0; i < applicationParameters.length; i++) {
if (name.equals(applicationParameters[i].getName())) {
n = i;
break;
}
}
if (n < 0)
return;
// Remove the specified parameter
int j = 0;
ApplicationParameter results[] =
new ApplicationParameter[applicationParameters.length - 1];
for (int i = 0; i < applicationParameters.length; i++) {
if (i != n)
results[j++] = applicationParameters[i];
}
applicationParameters = results;
}
// Inform interested listeners
fireContainerEvent("removeApplicationParameter", name);
|
public void | removeChild(org.apache.catalina.Container child)Add a child Container, only if the proposed child is an implementation
of Wrapper.
if (!(child instanceof Wrapper)) {
throw new IllegalArgumentException
(sm.getString("standardContext.notWrapper"));
}
super.removeChild(child);
|
public void | removeConstraint(org.apache.catalina.deploy.SecurityConstraint constraint)Remove the specified security constraint from this web application.
synchronized (constraints) {
// Make sure this constraint is currently present
int n = -1;
for (int i = 0; i < constraints.length; i++) {
if (constraints[i].equals(constraint)) {
n = i;
break;
}
}
if (n < 0)
return;
// Remove the specified constraint
int j = 0;
SecurityConstraint results[] =
new SecurityConstraint[constraints.length - 1];
for (int i = 0; i < constraints.length; i++) {
if (i != n)
results[j++] = constraints[i];
}
constraints = results;
}
// Inform interested listeners
fireContainerEvent("removeConstraint", constraint);
|
public void | removeErrorPage(org.apache.catalina.deploy.ErrorPage errorPage)Remove the error page for the specified error code or
Java language exception, if it exists; otherwise, no action is taken.
String exceptionType = errorPage.getExceptionType();
if (exceptionType != null) {
synchronized (exceptionPages) {
exceptionPages.remove(exceptionType);
}
} else {
synchronized (statusPages) {
if (errorPage.getErrorCode() == 200) {
this.okErrorPage = null;
}
statusPages.remove(new Integer(errorPage.getErrorCode()));
}
}
fireContainerEvent("removeErrorPage", errorPage);
|
public void | removeFilterDef(org.apache.catalina.deploy.FilterDef filterDef)Remove the specified filter definition from this Context, if it exists;
otherwise, no action is taken.
synchronized (filterDefs) {
filterDefs.remove(filterDef.getFilterName());
}
fireContainerEvent("removeFilterDef", filterDef);
|
public void | removeFilterMap(org.apache.catalina.deploy.FilterMap filterMap)Remove a filter mapping from this Context.
synchronized (filterMaps) {
// Make sure this filter mapping is currently present
int n = -1;
for (int i = 0; i < filterMaps.length; i++) {
if (filterMaps[i] == filterMap) {
n = i;
break;
}
}
if (n < 0)
return;
// Remove the specified filter mapping
FilterMap results[] = new FilterMap[filterMaps.length - 1];
System.arraycopy(filterMaps, 0, results, 0, n);
System.arraycopy(filterMaps, n + 1, results, n,
(filterMaps.length - 1) - n);
filterMaps = results;
}
// Inform interested listeners
fireContainerEvent("removeFilterMap", filterMap);
|
public void | removeInstanceListener(java.lang.String listener)Remove a class name from the set of InstanceListener classes that
will be added to newly created Wrappers.
synchronized (instanceListeners) {
// Make sure this welcome file is currently present
int n = -1;
for (int i = 0; i < instanceListeners.length; i++) {
if (instanceListeners[i].equals(listener)) {
n = i;
break;
}
}
if (n < 0)
return;
// Remove the specified constraint
int j = 0;
String results[] = new String[instanceListeners.length - 1];
for (int i = 0; i < instanceListeners.length; i++) {
if (i != n)
results[j++] = instanceListeners[i];
}
instanceListeners = results;
}
// Inform interested listeners
fireContainerEvent("removeInstanceListener", listener);
|
public void | removeMessageDestination(java.lang.String name)Remove any message destination with the specified name.
synchronized (messageDestinations) {
messageDestinations.remove(name);
}
fireContainerEvent("removeMessageDestination", name);
|
public void | removeMessageDestinationRef(java.lang.String name)Remove any message destination ref with the specified name.
namingResources.removeMessageDestinationRef(name);
fireContainerEvent("removeMessageDestinationRef", name);
|
public void | removeMimeMapping(java.lang.String extension)Remove the MIME mapping for the specified extension, if it exists;
otherwise, no action is taken.
synchronized (mimeMappings) {
mimeMappings.remove(extension);
}
fireContainerEvent("removeMimeMapping", extension);
|
public void | removeNotificationListener(javax.management.NotificationListener listener, javax.management.NotificationFilter filter, java.lang.Object object)
broadcaster.removeNotificationListener(listener,filter,object);
|
public void | removeNotificationListener(javax.management.NotificationListener listener)Remove a JMX-NotificationListener
broadcaster.removeNotificationListener(listener);
|
public void | removeParameter(java.lang.String name)Remove the context initialization parameter with the specified
name, if it exists; otherwise, no action is taken.
synchronized (parameters) {
parameters.remove(name);
}
fireContainerEvent("removeParameter", name);
|
public void | removeRoleMapping(java.lang.String role)Remove any security role reference for the specified name
synchronized (roleMappings) {
roleMappings.remove(role);
}
fireContainerEvent("removeRoleMapping", role);
|
public void | removeSecurityRole(java.lang.String role)Remove any security role with the specified name.
synchronized (securityRoles) {
// Make sure this security role is currently present
int n = -1;
for (int i = 0; i < securityRoles.length; i++) {
if (role.equals(securityRoles[i])) {
n = i;
break;
}
}
if (n < 0)
return;
// Remove the specified security role
int j = 0;
String results[] = new String[securityRoles.length - 1];
for (int i = 0; i < securityRoles.length; i++) {
if (i != n)
results[j++] = securityRoles[i];
}
securityRoles = results;
}
// Inform interested listeners
fireContainerEvent("removeSecurityRole", role);
|
public void | removeServletMapping(java.lang.String pattern)Remove any servlet mapping for the specified pattern, if it exists;
otherwise, no action is taken.
String name = null;
synchronized (servletMappings) {
name = (String) servletMappings.remove(pattern);
}
Wrapper wrapper = (Wrapper) findChild(name);
if( wrapper != null ) {
wrapper.removeMapping(pattern);
}
mapper.removeWrapper(pattern);
fireContainerEvent("removeServletMapping", pattern);
|
public void | removeTaglib(java.lang.String uri)Remove the tag library location forthe specified tag library URI.
synchronized (taglibs) {
taglibs.remove(uri);
}
fireContainerEvent("removeTaglib", uri);
|
public void | removeWatchedResource(java.lang.String name)Remove the specified watched resource name from the list associated
with this Context.
synchronized (watchedResources) {
// Make sure this watched resource is currently present
int n = -1;
for (int i = 0; i < watchedResources.length; i++) {
if (watchedResources[i].equals(name)) {
n = i;
break;
}
}
if (n < 0)
return;
// Remove the specified watched resource
int j = 0;
String results[] = new String[watchedResources.length - 1];
for (int i = 0; i < watchedResources.length; i++) {
if (i != n)
results[j++] = watchedResources[i];
}
watchedResources = results;
}
fireContainerEvent("removeWatchedResource", name);
|
public void | removeWelcomeFile(java.lang.String name)Remove the specified welcome file name from the list recognized
by this Context.
synchronized (welcomeFiles) {
// Make sure this welcome file is currently present
int n = -1;
for (int i = 0; i < welcomeFiles.length; i++) {
if (welcomeFiles[i].equals(name)) {
n = i;
break;
}
}
if (n < 0)
return;
// Remove the specified constraint
int j = 0;
String results[] = new String[welcomeFiles.length - 1];
for (int i = 0; i < welcomeFiles.length; i++) {
if (i != n)
results[j++] = welcomeFiles[i];
}
welcomeFiles = results;
}
// Inform interested listeners
postWelcomeFiles();
fireContainerEvent("removeWelcomeFile", name);
|
public void | removeWrapperLifecycle(java.lang.String listener)Remove a class name from the set of LifecycleListener classes that
will be added to newly created Wrappers.
synchronized (wrapperLifecycles) {
// Make sure this welcome file is currently present
int n = -1;
for (int i = 0; i < wrapperLifecycles.length; i++) {
if (wrapperLifecycles[i].equals(listener)) {
n = i;
break;
}
}
if (n < 0)
return;
// Remove the specified constraint
int j = 0;
String results[] = new String[wrapperLifecycles.length - 1];
for (int i = 0; i < wrapperLifecycles.length; i++) {
if (i != n)
results[j++] = wrapperLifecycles[i];
}
wrapperLifecycles = results;
}
// Inform interested listeners
fireContainerEvent("removeWrapperLifecycle", listener);
|
public void | removeWrapperListener(java.lang.String listener)Remove a class name from the set of ContainerListener classes that
will be added to newly created Wrappers.
synchronized (wrapperListeners) {
// Make sure this welcome file is currently present
int n = -1;
for (int i = 0; i < wrapperListeners.length; i++) {
if (wrapperListeners[i].equals(listener)) {
n = i;
break;
}
}
if (n < 0)
return;
// Remove the specified constraint
int j = 0;
String results[] = new String[wrapperListeners.length - 1];
for (int i = 0; i < wrapperListeners.length; i++) {
if (i != n)
results[j++] = wrapperListeners[i];
}
wrapperListeners = results;
}
// Inform interested listeners
fireContainerEvent("removeWrapperListener", listener);
|
private void | resetContext()
// Restore the original state ( pre reading web.xml in start )
// If you extend this - override this method and make sure to clean up
children=new HashMap();
startupTime = 0;
startTime = 0;
tldScanTime = 0;
// Bugzilla 32867
distributable = false;
applicationListeners = new String[0];
applicationEventListenersObjects = new Object[0];
applicationLifecycleListenersObjects = new Object[0];
if(log.isDebugEnabled())
log.debug("resetContext " + oname);
|
public boolean | resourcesStart()Allocate resources, including proxy.
Return true if initialization was successfull,
or false otherwise.
boolean ok = true;
Hashtable env = new Hashtable();
if (getParent() != null)
env.put(ProxyDirContext.HOST, getParent().getName());
env.put(ProxyDirContext.CONTEXT, getName());
try {
ProxyDirContext proxyDirContext =
new ProxyDirContext(env, webappResources);
if (webappResources instanceof FileDirContext) {
filesystemBased = true;
((FileDirContext) webappResources).setCaseSensitive
(isCaseSensitive());
((FileDirContext) webappResources).setAllowLinking
(isAllowLinking());
}
if (webappResources instanceof BaseDirContext) {
((BaseDirContext) webappResources).setDocBase(getBasePath());
((BaseDirContext) webappResources).setCached
(isCachingAllowed());
((BaseDirContext) webappResources).setCacheTTL(getCacheTTL());
((BaseDirContext) webappResources).setCacheMaxSize
(getCacheMaxSize());
((BaseDirContext) webappResources).allocate();
}
// Register the cache in JMX
if (isCachingAllowed()) {
ObjectName resourcesName =
new ObjectName(this.getDomain() + ":type=Cache,host="
+ getHostname() + ",path="
+ (("".equals(getPath()))?"/":getPath()));
Registry.getRegistry(null, null).registerComponent
(proxyDirContext.getCache(), resourcesName, null);
}
this.resources = proxyDirContext;
} catch (Throwable t) {
log.error(sm.getString("standardContext.resourcesStart"), t);
ok = false;
}
return (ok);
|
public boolean | resourcesStop()Deallocate resources and destroy proxy.
boolean ok = true;
try {
if (resources != null) {
if (resources instanceof Lifecycle) {
((Lifecycle) resources).stop();
}
if (webappResources instanceof BaseDirContext) {
((BaseDirContext) webappResources).release();
}
// Unregister the cache in JMX
if (isCachingAllowed()) {
ObjectName resourcesName =
new ObjectName(this.getDomain()
+ ":type=Cache,host="
+ getHostname() + ",path="
+ (("".equals(getPath()))?"/"
:getPath()));
Registry.getRegistry(null, null)
.unregisterComponent(resourcesName);
}
}
} catch (Throwable t) {
log.error(sm.getString("standardContext.resourcesStop"), t);
ok = false;
}
this.resources = null;
return (ok);
|
public void | setAllowLinking(boolean allowLinking)Set allow linking.
this.allowLinking = allowLinking;
|
public void | setAltDDName(java.lang.String altDDName)Set an alternate Deployment Descriptor name.
this.altDDName = altDDName;
if (context != null) {
context.setAttribute(Globals.ALT_DD_ATTR,altDDName);
}
|
public void | setAnnotationProcessor(org.apache.AnnotationProcessor annotationProcessor)
this.annotationProcessor = annotationProcessor;
|
public void | setAntiJARLocking(boolean antiJARLocking)Set the antiJARLocking feature for this Context.
boolean oldAntiJARLocking = this.antiJARLocking;
this.antiJARLocking = antiJARLocking;
support.firePropertyChange("antiJARLocking",
new Boolean(oldAntiJARLocking),
new Boolean(this.antiJARLocking));
|
public void | setAntiResourceLocking(boolean antiResourceLocking)Set the antiResourceLocking feature for this Context.
boolean oldAntiResourceLocking = this.antiResourceLocking;
this.antiResourceLocking = antiResourceLocking;
support.firePropertyChange("antiResourceLocking",
new Boolean(oldAntiResourceLocking),
new Boolean(this.antiResourceLocking));
|
public void | setApplicationEventListeners(java.lang.Object[] listeners)Store the set of initialized application event listener objects,
in the order they were specified in the web application deployment
descriptor, for this application.
applicationEventListenersObjects = listeners;
|
public void | setApplicationLifecycleListeners(java.lang.Object[] listeners)Store the set of initialized application lifecycle listener objects,
in the order they were specified in the web application deployment
descriptor, for this application.
applicationLifecycleListenersObjects = listeners;
|
public void | setAvailable(boolean available)Set the application available flag for this Context.
boolean oldAvailable = this.available;
this.available = available;
support.firePropertyChange("available",
new Boolean(oldAvailable),
new Boolean(this.available));
|
public void | setCacheMaxSize(int cacheMaxSize)Set the maximum size of the cache in KB.
this.cacheMaxSize = cacheMaxSize;
|
public void | setCacheTTL(int cacheTTL)Set cache TTL.
this.cacheTTL = cacheTTL;
|
public void | setCachingAllowed(boolean cachingAllowed)Set caching allowed flag.
this.cachingAllowed = cachingAllowed;
|
public void | setCaseSensitive(boolean caseSensitive)Set case sensitivity.
this.caseSensitive = caseSensitive;
|
public void | setCharsetMapper(org.apache.catalina.util.CharsetMapper mapper)Set the Locale to character set mapper for this Context.
CharsetMapper oldCharsetMapper = this.charsetMapper;
this.charsetMapper = mapper;
if( mapper != null )
this.charsetMapperClass= mapper.getClass().getName();
support.firePropertyChange("charsetMapper", oldCharsetMapper,
this.charsetMapper);
|
public void | setCharsetMapperClass(java.lang.String mapper)Set the Locale to character set mapper class for this Context.
String oldCharsetMapperClass = this.charsetMapperClass;
this.charsetMapperClass = mapper;
support.firePropertyChange("charsetMapperClass",
oldCharsetMapperClass,
this.charsetMapperClass);
|
public void | setCompilerClasspath(java.lang.String compilerClasspath)Set the compiler classpath.
this.compilerClasspath = compilerClasspath;
|
public void | setConfigFile(java.lang.String configFile)Set the path to a file to save this Context information.
this.configFile = configFile;
|
public void | setConfigured(boolean configured)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.
boolean oldConfigured = this.configured;
this.configured = configured;
support.firePropertyChange("configured",
new Boolean(oldConfigured),
new Boolean(this.configured));
|
public void | setCookies(boolean cookies)Set the "use cookies for session ids" flag.
boolean oldCookies = this.cookies;
this.cookies = cookies;
support.firePropertyChange("cookies",
new Boolean(oldCookies),
new Boolean(this.cookies));
|
public void | setCrossContext(boolean crossContext)Set the "allow crossing servlet contexts" flag.
boolean oldCrossContext = this.crossContext;
this.crossContext = crossContext;
support.firePropertyChange("crossContext",
new Boolean(oldCrossContext),
new Boolean(this.crossContext));
|
public void | setDefaultContextXml(java.lang.String defaultContextXml)Set the location of the default context xml that will be used.
If not absolute, it'll be made relative to the engine's base dir
( which defaults to catalina.base system property ).
this.defaultContextXml = defaultContextXml;
|
public void | setDefaultWebXml(java.lang.String defaultWebXml)Set the location of the default web xml that will be used.
If not absolute, it'll be made relative to the engine's base dir
( which defaults to catalina.base system property ).
this.defaultWebXml = defaultWebXml;
|
public void | setDelegate(boolean delegate)Set the "follow standard delegation model" flag used to configure
our ClassLoader.
boolean oldDelegate = this.delegate;
this.delegate = delegate;
support.firePropertyChange("delegate", new Boolean(oldDelegate),
new Boolean(this.delegate));
|
public void | setDisplayName(java.lang.String displayName)Set the display name of this web application.
String oldDisplayName = this.displayName;
this.displayName = displayName;
support.firePropertyChange("displayName", oldDisplayName,
this.displayName);
|
public void | setDistributable(boolean distributable)Set the distributable flag for this web application.
boolean oldDistributable = this.distributable;
this.distributable = distributable;
support.firePropertyChange("distributable",
new Boolean(oldDistributable),
new Boolean(this.distributable));
// Bugzilla 32866
if(getManager() != null) {
if(log.isDebugEnabled()) {
log.debug("Propagating distributable=" + distributable
+ " to manager");
}
getManager().setDistributable(distributable);
}
|
public void | setDocBase(java.lang.String docBase)Set the document root for this Context. This can be an absolute
pathname, a relative pathname, or a URL.
this.docBase = docBase;
|
public void | setEngineName(java.lang.String engineName)
this.engineName = engineName;
|
public void | setIgnoreAnnotations(boolean ignoreAnnotations)Set the boolean on the annotations parsing for this web
application.
boolean oldIgnoreAnnotations = this.ignoreAnnotations;
this.ignoreAnnotations = ignoreAnnotations;
support.firePropertyChange("ignoreAnnotations", Boolean.valueOf(oldIgnoreAnnotations),
Boolean.valueOf(this.ignoreAnnotations));
|
public void | setJ2EEApplication(java.lang.String j2EEApplication)
this.j2EEApplication = j2EEApplication;
|
public void | setJ2EEServer(java.lang.String j2EEServer)
this.j2EEServer = j2EEServer;
|
public java.lang.String[] | setJavaVMs(java.lang.String[] javaVMs)
return this.javaVMs = javaVMs;
|
public void | setLazy(boolean lazy)
this.lazy = lazy;
|
public synchronized void | setLoader(org.apache.catalina.Loader loader)Set the Loader with which this Context is associated.
super.setLoader(loader);
|
public void | setLoginConfig(org.apache.catalina.deploy.LoginConfig config)Set the login configuration descriptor for this web application.
// Validate the incoming property value
if (config == null)
throw new IllegalArgumentException
(sm.getString("standardContext.loginConfig.required"));
String loginPage = config.getLoginPage();
if ((loginPage != null) && !loginPage.startsWith("/")) {
if (isServlet22()) {
if(log.isDebugEnabled())
log.debug(sm.getString("standardContext.loginConfig.loginWarning",
loginPage));
config.setLoginPage("/" + loginPage);
} else {
throw new IllegalArgumentException
(sm.getString("standardContext.loginConfig.loginPage",
loginPage));
}
}
String errorPage = config.getErrorPage();
if ((errorPage != null) && !errorPage.startsWith("/")) {
if (isServlet22()) {
if(log.isDebugEnabled())
log.debug(sm.getString("standardContext.loginConfig.errorWarning",
errorPage));
config.setErrorPage("/" + errorPage);
} else {
throw new IllegalArgumentException
(sm.getString("standardContext.loginConfig.errorPage",
errorPage));
}
}
// Process the property setting change
LoginConfig oldLoginConfig = this.loginConfig;
this.loginConfig = config;
support.firePropertyChange("loginConfig",
oldLoginConfig, this.loginConfig);
|
public void | setName(java.lang.String name)
super.setName( name );
encodedPath = urlEncoder.encode(name);
|
public void | setNamingContextListener(NamingContextListener namingContextListener)Naming context listener setter.
this.namingContextListener = namingContextListener;
|
public void | setNamingResources(org.apache.catalina.deploy.NamingResources namingResources)Set the naming resources for this web application.
// Process the property setting change
NamingResources oldNamingResources = this.namingResources;
this.namingResources = namingResources;
namingResources.setContainer(this);
support.firePropertyChange("namingResources",
oldNamingResources, this.namingResources);
|
public void | setOriginalDocBase(java.lang.String docBase)Set the original document root for this Context. This can be an absolute
pathname, a relative pathname, or a URL.
this.originalDocBase = docBase;
|
public void | setOverride(boolean override)Set the DefaultContext override flag for this web application.
boolean oldOverride = this.override;
this.override = override;
support.firePropertyChange("override",
new Boolean(oldOverride),
new Boolean(this.override));
|
public void | setPath(java.lang.String path)Set the context path for this Context.
IMPLEMENTATION NOTE: The context path is used as the "name" of
a Context, because it must be unique.
// XXX Use host in name
setName(RequestUtil.URLDecode(path));
|
private void | setPaused(boolean paused)Set the request processing paused flag for this Context.
this.paused = paused;
|
public void | setPrivileged(boolean privileged)Set the privileged flag for this web application.
boolean oldPrivileged = this.privileged;
this.privileged = privileged;
support.firePropertyChange("privileged",
new Boolean(oldPrivileged),
new Boolean(this.privileged));
|
public void | setProcessTlds(boolean newProcessTlds)Sets the process TLDs attribute.
processTlds = newProcessTlds;
|
public void | setPublicId(java.lang.String publicId)Set the public identifier of the deployment descriptor DTD that is
currently being parsed.
if (log.isDebugEnabled())
log.debug("Setting deployment descriptor public ID to '" +
publicId + "'");
String oldPublicId = this.publicId;
this.publicId = publicId;
support.firePropertyChange("publicId", oldPublicId, publicId);
|
public void | setReloadable(boolean reloadable)Set the reloadable flag for this web application.
boolean oldReloadable = this.reloadable;
this.reloadable = reloadable;
support.firePropertyChange("reloadable",
new Boolean(oldReloadable),
new Boolean(this.reloadable));
|
public void | setReplaceWelcomeFiles(boolean replaceWelcomeFiles)Set the "replace welcome files" property.
boolean oldReplaceWelcomeFiles = this.replaceWelcomeFiles;
this.replaceWelcomeFiles = replaceWelcomeFiles;
support.firePropertyChange("replaceWelcomeFiles",
new Boolean(oldReplaceWelcomeFiles),
new Boolean(this.replaceWelcomeFiles));
|
public synchronized void | setResources(javax.naming.directory.DirContext resources)Set the resources DirContext object with which this Container is
associated.
if (started) {
throw new IllegalStateException
(sm.getString("standardContext.resources.started"));
}
DirContext oldResources = this.webappResources;
if (oldResources == resources)
return;
if (resources instanceof BaseDirContext) {
((BaseDirContext) resources).setCached(isCachingAllowed());
((BaseDirContext) resources).setCacheTTL(getCacheTTL());
((BaseDirContext) resources).setCacheMaxSize(getCacheMaxSize());
}
if (resources instanceof FileDirContext) {
filesystemBased = true;
((FileDirContext) resources).setCaseSensitive(isCaseSensitive());
((FileDirContext) resources).setAllowLinking(isAllowLinking());
}
this.webappResources = resources;
// The proxied resources will be refreshed on start
this.resources = null;
support.firePropertyChange("resources", oldResources,
this.webappResources);
|
public void | setSaveConfig(boolean saveConfig)Set save config flag.
this.saveConfig = saveConfig;
|
public java.lang.String | setServer(java.lang.String server)
return this.server=server;
|
public void | setSessionTimeout(int timeout)Set the default session timeout (in minutes) for this
web application.
int oldSessionTimeout = this.sessionTimeout;
/*
* SRV.13.4 ("Deployment Descriptor"):
* If the timeout is 0 or less, the container ensures the default
* behaviour of sessions is never to time out.
*/
this.sessionTimeout = (timeout == 0) ? -1 : timeout;
support.firePropertyChange("sessionTimeout",
new Integer(oldSessionTimeout),
new Integer(this.sessionTimeout));
|
public void | setStartupTime(long startupTime)
this.startupTime = startupTime;
|
public void | setSwallowOutput(boolean swallowOutput)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.
boolean oldSwallowOutput = this.swallowOutput;
this.swallowOutput = swallowOutput;
support.firePropertyChange("swallowOutput",
new Boolean(oldSwallowOutput),
new Boolean(this.swallowOutput));
|
public void | setTldNamespaceAware(boolean tldNamespaceAware)Set the namespace aware feature of the XML parser used when
parsing xml instances.
this.tldNamespaceAware= tldNamespaceAware;
|
public void | setTldScanTime(long tldScanTime)
this.tldScanTime = tldScanTime;
|
public void | setTldValidation(boolean tldValidation)Set the validation feature of the XML parser used when
parsing tlds files.
this.tldValidation = tldValidation;
|
public void | setUnloadDelay(long unloadDelay)Set the value of the unloadDelay flag, which represents the amount
of ms that the container will wait when unloading servlets.
Setting this to a small value may cause more requests to fail
to complete when stopping a web application.
long oldUnloadDelay = this.unloadDelay;
this.unloadDelay = unloadDelay;
support.firePropertyChange("unloadDelay",
new Long(oldUnloadDelay),
new Long(this.unloadDelay));
|
public void | setUnpackWAR(boolean unpackWAR)Unpack WAR flag mutator.
this.unpackWAR = unpackWAR;
|
public void | setUseNaming(boolean useNaming)Enables or disables naming.
this.useNaming = useNaming;
|
public void | setWorkDir(java.lang.String workDir)Set the work directory for this Context.
this.workDir = workDir;
if (started) {
postWorkDirectory();
}
|
public void | setWrapperClass(java.lang.String wrapperClassName)Set the Java class name of the Wrapper implementation used
for servlets registered in this Context.
this.wrapperClassName = wrapperClassName;
try {
wrapperClass = Class.forName(wrapperClassName);
if (!StandardWrapper.class.isAssignableFrom(wrapperClass)) {
throw new IllegalArgumentException(
sm.getString("standardContext.invalidWrapperClass",
wrapperClassName));
}
} catch (ClassNotFoundException cnfe) {
throw new IllegalArgumentException(cnfe.getMessage());
}
|
public void | setXmlNamespaceAware(boolean webXmlNamespaceAware)Set the namespace aware feature of the XML parser used when
parsing xml instances.
this.webXmlNamespaceAware= webXmlNamespaceAware;
|
public void | setXmlValidation(boolean webXmlValidation)Set the validation feature of the XML parser used when
parsing xml instances.
this.webXmlValidation = webXmlValidation;
|
public synchronized void | start()Start this Context component.
//if (lazy ) return;
if (started) {
if(log.isInfoEnabled())
log.info(sm.getString("containerBase.alreadyStarted", logName()));
return;
}
if( !initialized ) {
try {
init();
} catch( Exception ex ) {
throw new LifecycleException("Error initializaing ", ex);
}
}
if(log.isDebugEnabled())
log.debug("Starting " + ("".equals(getName()) ? "ROOT" : getName()));
// Set JMX object name for proper pipeline registration
preRegisterJMX();
if ((oname != null) &&
(Registry.getRegistry(null, null).getMBeanServer().isRegistered(oname))) {
// As things depend on the JMX registration, the context
// must be reregistered again once properly initialized
Registry.getRegistry(null, null).unregisterComponent(oname);
}
// Notify our interested LifecycleListeners
lifecycle.fireLifecycleEvent(BEFORE_START_EVENT, null);
setAvailable(false);
setConfigured(false);
boolean ok = true;
// Add missing components as necessary
if (webappResources == null) { // (1) Required by Loader
if (log.isDebugEnabled())
log.debug("Configuring default Resources");
try {
if ((docBase != null) && (docBase.endsWith(".war")) && (!(new File(getBasePath())).isDirectory()))
setResources(new WARDirContext());
else
setResources(new FileDirContext());
} catch (IllegalArgumentException e) {
log.error("Error initializing resources: " + e.getMessage());
ok = false;
}
}
if (ok) {
if (!resourcesStart()) {
log.error( "Error in resourceStart()");
ok = false;
}
}
// Look for a realm - that may have been configured earlier.
// If the realm is added after context - it'll set itself.
// TODO: what is the use case for this ?
if( realm == null && mserver != null ) {
ObjectName realmName=null;
try {
realmName=new ObjectName( getEngineName() + ":type=Realm,host=" +
getHostname() + ",path=" + getPath());
if( mserver.isRegistered(realmName ) ) {
mserver.invoke(realmName, "init",
new Object[] {},
new String[] {}
);
}
} catch( Throwable t ) {
if(log.isDebugEnabled())
log.debug("No realm for this host " + realmName);
}
}
if (getLoader() == null) {
WebappLoader webappLoader = new WebappLoader(getParentClassLoader());
webappLoader.setDelegate(getDelegate());
setLoader(webappLoader);
}
// Initialize character set mapper
getCharsetMapper();
// Post work directory
postWorkDirectory();
// Validate required extensions
boolean dependencyCheck = true;
try {
dependencyCheck = ExtensionValidator.validateApplication
(getResources(), this);
} catch (IOException ioe) {
log.error("Error in dependencyCheck", ioe);
dependencyCheck = false;
}
if (!dependencyCheck) {
// do not make application available if depency check fails
ok = false;
}
// Reading the "catalina.useNaming" environment variable
String useNamingProperty = System.getProperty("catalina.useNaming");
if ((useNamingProperty != null)
&& (useNamingProperty.equals("false"))) {
useNaming = false;
}
if (ok && isUseNaming()) {
if (namingContextListener == null) {
namingContextListener = new NamingContextListener();
namingContextListener.setName(getNamingContextName());
addLifecycleListener(namingContextListener);
}
}
// Standard container startup
if (log.isDebugEnabled())
log.debug("Processing standard container startup");
// Binding thread
ClassLoader oldCCL = bindThread();
boolean mainOk = false;
try {
if (ok) {
started = true;
// Start our subordinate components, if any
if ((loader != null) && (loader instanceof Lifecycle))
((Lifecycle) loader).start();
// Unbinding thread
unbindThread(oldCCL);
// Binding thread
oldCCL = bindThread();
// Initialize logger again. Other components might have used it too early,
// so it should be reset.
logger = null;
getLogger();
if ((logger != null) && (logger instanceof Lifecycle))
((Lifecycle) logger).start();
if ((cluster != null) && (cluster instanceof Lifecycle))
((Lifecycle) cluster).start();
if ((realm != null) && (realm instanceof Lifecycle))
((Lifecycle) realm).start();
if ((resources != null) && (resources instanceof Lifecycle))
((Lifecycle) resources).start();
// Start our child containers, if any
Container children[] = findChildren();
for (int i = 0; i < children.length; i++) {
if (children[i] instanceof Lifecycle)
((Lifecycle) children[i]).start();
}
// Start the Valves in our pipeline (including the basic),
// if any
if (pipeline instanceof Lifecycle) {
((Lifecycle) pipeline).start();
}
if(getProcessTlds()) {
processTlds();
}
// Notify our interested LifecycleListeners
lifecycle.fireLifecycleEvent(START_EVENT, null);
// Acquire clustered manager
Manager contextManager = null;
if (manager == null) {
if ( (getCluster() != null) && distributable) {
try {
contextManager = getCluster().createManager(getName());
} catch (Exception ex) {
log.error("standardContext.clusterFail", ex);
ok = false;
}
} else {
contextManager = new StandardManager();
}
}
// Configure default manager if none was specified
if (contextManager != null) {
setManager(contextManager);
}
if (manager!=null && (getCluster() != null) && distributable) {
//let the cluster know that there is a context that is distributable
//and that it has its own manager
getCluster().registerManager(manager);
}
// Start manager
if ((manager != null) && (manager instanceof Lifecycle)) {
((Lifecycle) getManager()).start();
}
// Start ContainerBackgroundProcessor thread
super.threadStart();
mainOk = true;
}
} finally {
// Unbinding thread
unbindThread(oldCCL);
if (!mainOk) {
// An exception occurred
// Register with JMX anyway, to allow management
registerJMX();
}
}
if (!getConfigured()) {
log.error( "Error getConfigured");
ok = false;
}
// We put the resources into the servlet context
if (ok)
getServletContext().setAttribute
(Globals.RESOURCES_ATTR, getResources());
// Initialize associated mapper
mapper.setContext(getPath(), welcomeFiles, resources);
// Binding thread
oldCCL = bindThread();
// Set annotation processing parameter for Jasper (unfortunately, since
// this can be configured in many places and not just in /WEB-INF/web.xml,
// there are not many solutions)
// Initialize annotation processor
if (ok && !getIgnoreAnnotations()) {
if (annotationProcessor == null) {
if (isUseNaming() && namingContextListener != null) {
annotationProcessor =
new DefaultAnnotationProcessor(namingContextListener.getEnvContext());
} else {
annotationProcessor = new DefaultAnnotationProcessor(null);
}
}
getServletContext().setAttribute
(AnnotationProcessor.class.getName(), annotationProcessor);
}
try {
// Create context attributes that will be required
if (ok) {
postWelcomeFiles();
}
if (ok) {
// Notify our interested LifecycleListeners
lifecycle.fireLifecycleEvent(AFTER_START_EVENT, null);
}
// Configure and call application event listeners and filters
if (ok) {
if (!listenerStart()) {
log.error( "Error listenerStart");
ok = false;
}
}
if (ok) {
if (!filterStart()) {
log.error( "Error filterStart");
ok = false;
}
}
// Load and initialize all "load on startup" servlets
if (ok) {
loadOnStartup(findChildren());
}
} finally {
// Unbinding thread
unbindThread(oldCCL);
}
// Set available status depending upon startup success
if (ok) {
if (log.isDebugEnabled())
log.debug("Starting completed");
setAvailable(true);
} else {
log.error(sm.getString("standardContext.startFailed", getName()));
try {
stop();
} catch (Throwable t) {
log.error(sm.getString("standardContext.startCleanup"), t);
}
setAvailable(false);
}
// JMX registration
registerJMX();
startTime=System.currentTimeMillis();
// Send j2ee.state.running notification
if (ok && (this.getObjectName() != null)) {
Notification notification =
new Notification("j2ee.state.running", this.getObjectName(),
sequenceNumber++);
broadcaster.sendNotification(notification);
}
// Close all JARs right away to avoid always opening a peak number
// of files on startup
if (getLoader() instanceof WebappLoader) {
((WebappLoader) getLoader()).closeJARs(true);
}
// Reinitializing if something went wrong
if (!ok && started) {
stop();
}
//cacheContext();
|
public void | startRecursive()
// nothing to start recursive, the servlets will be started by load-on-startup
start();
|
public synchronized void | stop()Stop this Context component.
// Validate and update our current component state
if (!started) {
if(log.isInfoEnabled())
log.info(sm.getString("containerBase.notStarted", logName()));
return;
}
// Notify our interested LifecycleListeners
lifecycle.fireLifecycleEvent(BEFORE_STOP_EVENT, null);
// Send j2ee.state.stopping notification
if (this.getObjectName() != null) {
Notification notification =
new Notification("j2ee.state.stopping", this.getObjectName(),
sequenceNumber++);
broadcaster.sendNotification(notification);
}
// Mark this application as unavailable while we shut down
setAvailable(false);
// Binding thread
ClassLoader oldCCL = bindThread();
try {
// Stop our child containers, if any
Container[] children = findChildren();
for (int i = 0; i < children.length; i++) {
if (children[i] instanceof Lifecycle)
((Lifecycle) children[i]).stop();
}
// Stop our filters
filterStop();
// Stop ContainerBackgroundProcessor thread
super.threadStop();
if ((manager != null) && (manager instanceof Lifecycle)) {
((Lifecycle) manager).stop();
}
// Stop our application listeners
listenerStop();
// Finalize our character set mapper
setCharsetMapper(null);
// Normal container shutdown processing
if (log.isDebugEnabled())
log.debug("Processing standard container shutdown");
// Notify our interested LifecycleListeners
lifecycle.fireLifecycleEvent(STOP_EVENT, null);
started = false;
// Stop the Valves in our pipeline (including the basic), if any
if (pipeline instanceof Lifecycle) {
((Lifecycle) pipeline).stop();
}
// Clear all application-originated servlet context attributes
if (context != null)
context.clearAttributes();
// Stop resources
resourcesStop();
if ((realm != null) && (realm instanceof Lifecycle)) {
((Lifecycle) realm).stop();
}
if ((cluster != null) && (cluster instanceof Lifecycle)) {
((Lifecycle) cluster).stop();
}
if ((logger != null) && (logger instanceof Lifecycle)) {
((Lifecycle) logger).stop();
}
if ((loader != null) && (loader instanceof Lifecycle)) {
((Lifecycle) loader).stop();
}
} finally {
// Unbinding thread
unbindThread(oldCCL);
}
// Send j2ee.state.stopped notification
if (this.getObjectName() != null) {
Notification notification =
new Notification("j2ee.state.stopped", this.getObjectName(),
sequenceNumber++);
broadcaster.sendNotification(notification);
}
// Reset application context
context = null;
// This object will no longer be visible or used.
try {
resetContext();
} catch( Exception ex ) {
log.error( "Error reseting context " + this + " " + ex, ex );
}
// Notify our interested LifecycleListeners
lifecycle.fireLifecycleEvent(AFTER_STOP_EVENT, null);
if (log.isDebugEnabled())
log.debug("Stopping complete");
|
public java.lang.String | toString()Return a String representation of this component.
StringBuffer sb = new StringBuffer();
if (getParent() != null) {
sb.append(getParent().toString());
sb.append(".");
}
sb.append("StandardContext[");
sb.append(getName());
sb.append("]");
return (sb.toString());
|
private void | unbindThread(java.lang.ClassLoader oldContextClassLoader)Unbind thread.
Thread.currentThread().setContextClassLoader(oldContextClassLoader);
oldContextClassLoader = null;
if (isUseNaming()) {
ContextBindings.unbindThread(this, this);
}
DirContextURLStreamHandler.unbind();
|
private boolean | validateURLPattern(java.lang.String urlPattern)Validate the syntax of a proposed <url-pattern>
for conformance with specification requirements.
if (urlPattern == null)
return (false);
if (urlPattern.indexOf('\n") >= 0 || urlPattern.indexOf('\r") >= 0) {
return (false);
}
if (urlPattern.startsWith("*.")) {
if (urlPattern.indexOf('/") < 0)
return (true);
else
return (false);
}
if ( (urlPattern.startsWith("/")) &&
(urlPattern.indexOf("*.") < 0))
return (true);
else
return (false);
|