The DefaultContext Component
Overview
The DefaultContext element represents a subset of the configuration settings for a Context, and can be nested inside an Engine or Host element to represent default configuration properties for Contexts that are automatically created.
See Automatic Application Deployment and User Web Applications for more information about the circumstances in which Catalina will automatically create Contexts for you, based on the configuration properties that are stored here.
Attributes
All implementations of Host support the following attributes:
Attribute Description cookies Set to true if you want cookies to be used for session identifier communication if supported by the client (this is the default). Set to false if you want to disable the use of cookies for session identifier communication, and rely only on URL rewriting by the application. crossContext Set to true if you want calls within this application to ServletContext.getContext() to successfully return a request dispatcher for other web applications running on this virtual host. Set to false (the default) in security conscious environments, to make getContext() always return null. reloadable Set to true if you want Catalina to monitor classes in /WEB-INF/classes/ and /WEB-INF/lib for changes, and automatically reload the web application if a change is detected. This feature is very useful during application development, but it requires significant runtime overhead and is not recommended for use on deployed production applications. You can use the Manager web application, however, to trigger reloads of deployed applications on demand. useNaming Set to true (the default) to have Catalina enable a JNDI InitialContext for this web application that is compatible with Java2 Enterprise Edition (J2EE) platform conventions. wrapperClass Java class name of the org.apache.catalina.Wrapper implementation class that will be used for servlets managed by this Context. If not specified, a standard default value will be used.
Standard Implementation
The standard implementation of DefaultContext is org.apache.catalina.core.DefaultContext.
Context Parameters
You can configure named values that will be made visible to web applications as servlet context initialization parameters by nesting <Parameter> elements inside this element. For example, you can create an initialization parameter like this:
<DefaultContext ...> ... <Parameter name="companyName" value="My Company, Incorporated" override="false"/> ... </DefaultContext>This is equivalent to the inclusion of the following element in the web application deployment descriptor (/WEB-INF/web.xml): <context-param> <param-name>companyName</param-name> <param-value>My Company, Incorporated </context-param>
but does not require modification of the deployment descriptor to customize this value.
The valid attributes for a <Parameter> element are as follows:
Attribute Description description Optional, human-readable description of this context initialization parameter. name The name of the context initialization parameter to be created. override Set this to false if you do not want a for the same parameter name, found in the web application deployment descriptor, to override the value specified here. By default, overrides are allowed. value The parameter value that will be presented to the application when requested by calling ServletContext.getInitParameter().
Environment Entries
You can configure named values that will be made visible to web applications as environment entry resources, by nesting <Environment> entries inside this element. For example, you can create an environment entry like this:
<DefaultContext ...> ... <Environment name="maxExemptions" value="10" type="java.lang.Integer" override="false"/> ... </DefaultContext>This is equivalent to the inclusion of the following element in the web application deployment descriptor (/WEB-INF/web.xml):
<env-entry> <env-entry-name>maxExemptions</param-name> <env-entry-value>10</env-entry-value> <env-entry-type>java.lang.Integer</env-entry-type> </env-entry>but does not require modification of the deployment descriptor to customize this value.
The valid attributes for an <Environment> element are as follows:
Attribute Description description Optional, human-readable description of this environment entry. name The name of the environment entry to be created, relative to the java:comp/env context. override Set this to false if you do not want an for the same environment entry name, found in the web application deployment descriptor, to override the value specified here. By default, overrides are allowed. type The fully qualified Java class name expected by the web application for this environment entry. Must be one of the legal values for in the web application deployment descriptor: java.lang.Boolean, java.lang.Byte, java.lang.Character, java.lang.Double, java.lang.Float, java.lang.Integer, java.lang.Long, java.lang.Short, or java.lang.String. value The parameter value that will be presented to the application when requested from the JNDI context. This value must be convertable to the Java type defined by the type attribute.
Lifecycle Listeners
If you have implemented a Java object that needs to know when this Context is started or stopped, you can declare it by nesting a Listener element inside this element. The class name you specify must implement the org.apache.catalina.LifecycleListener interface, and it will be notified about the occurrence of the coresponding lifecycle events. Configuration of such a listener looks like this:
<DefaultContext ...> ... <Listener className="com.mycompany.mypackage.MyListener" ... > ... </DefaultContext>Note that a Listener can have any number of additional properties that may be configured from this element. Attribute names are matched to corresponding JavaBean property names using the standard property method naming patterns.
Resource Definitions
You can declare the characteristics of the resource to be returned for JNDI lookups of <resource-ref> and <resource-env-ref> elements in the web application deployment descriptor. You MUST also define Resource Parameters for the same resource name, to configure the object factory to be used (if not known to Tomcat already), and the properties used to configure that object factory.
For example, you can create a resource definition like this: <DefaultContext ...> ... <Resource name="jdbc/EmployeeDB" auth="Container" type="javax.sql.DataSource" description="Employees Database for HR Applications"/> ... </DefaultContext>
This is equivalent to the inclusion of the following element in the web application deployment descriptor (/WEB-INF/web.xml): <resource-ref> <description>Employees Database for HR Applications</description> <res-ref-name>jdbc/EmployeeDB</res-ref-name> <res-ref-type>javax.sql.DataSource</res-ref-type> <res-auth>Container</res-auth> </resource-ref>
but does not require modification of the deployment descriptor to customize this value. The valid attriutes for a <Resource> element are as follows:
Attribute Description auth Specify whether the web Application code signs on to the corresponding resource manager programatically, or whether the Container will sign on to the resource manager on behalf of the application. The value of this attribute must be Application or Container. This attribute is required if the web application will use a <resource-ref> element in the web application deployment descriptor, but is optional if the application uses a <resource-env-ref> instead. description Optional, human-readable description of this resource. name The name of the resource to be created, relative to the java:comp/env context. scope Specify whether connections obtained through this resource manager can be shared. The value of this attribute must be Shareable or Unshareable. By default, connections are assumed to be shareable. type The fully qualified Java class name expected by the web application when it performs a lookup for this resource.
Resource Parameters
This element is used to configure the resource manager (or object factory) used to return objects when the web application performs a JNDI lookup operation on the corresponding resource name. You MUST define resource parameters for every resource name that is specified by a <Resource> element inside a <Context> or <DefaultContext> element in $CATALINA_HOME/conf/server.xml, and/or for every name declared in a <resource-ref> or <resource-env-ref> element in the web application deployment descriptor, before that resource can be successfully accessed.
Resource parameters are defined by name, and the precise set of parameter names supported depend on the resource manager (or object factory) you are using - they must match the names of settable JavaBeans properties on the corresponding factory class. The JNDI implementation will configure an instance of the specified factory class specified by calling all the corresponding JavaBeans property setters, and then making the factory instance available via the JNDI lookup() call.
The resource parameters for a JDBC data source might look something like this:
<DefaultContext ...> ... <ResourceParams name="jdbc/EmployeeDB"> <parameter> <name>driverClassName</name> <value>org.hsql.jdbcDriver</value> </parameter> <parameter> <name>driverName</name> </value>jdbc:HypersonicSQL:database</value> </parameter> <parameter> <name>user</name> <value>dbusername</value> </parameter> <parameter> <name>password</name> <value>dbpassword</value> </parameter> </ResourceParams> ... </DefaultContext>If you need to specify the Java class name of a factory class for a particular resource type, use a <parameter> entry named factory nested inside the <ResourceParams> element.
The valid attributes of a <ResourceParams> element are as follows:
Attribute Description name The name of the resource being configured, relative to the java:comp/env contxt. This name MUST match the name of a resource defined by a <Resource> element in $CATALINA_HOME/conf/server.xml, and/or referenced in a <resource-ref> or <resource-env-ref> element in the web application deployment descriptor.
Resource Links
This element is used to create a link to a global JNDI resource. Doing a JNDI lookup on the link name will then return the linked global resource.
For example, you can create a resource link like this:
<DefaultContext ...> ... <ResourceLink name="linkToGlobalResource" global="simpleValue" type="java.lang.Integer" ... </DefaultContext>The valid attributes for a <ResourceLink> element are as follows:
Attribute Description global The name of the linked global resource in the gobal JNDI context. name The name of the resource link to be created, relative to the java:comp/env context. type The fully qualified Java class name expected by the web application when it performs a lookup for this resource link.