Sun ONE Application Server 7 Developer's Guide to Web Applications |
Assembling and Deploying Web ModulesThis module describes how web modules are assembled and deployed in Sun ONE Application Server. For general assembly and deployment information, see the Sun ONE Application Server Developer's Guide.
The following topics are presented in this module:
- Web Application Structure
- Creating Web Deployment Descriptors
- Deploying Web Applications
- Dynamic Reloading of Web Applications
- The sun-web-app_2_3-0.dtd File
- Elements in the sun-web.xml File
- Sample Web Module XML Files
Web Application Structure
Web Applications have a directory structure, all accessible from a mapping to the application's document root (for example, /hello). The document root contains JSP files, HTML files, and static files such as image files.
A WAR (web application archive) file contains a complete web application in compressed form.
A special directory under the document root, WEB-INF, contains everything related to the application that is not in the public document tree of the application. No file contained in WEB-INF can be served directly to the client. The contents of WEB-INF include:
- /WEB-INF/classes/*, the directory for servlet and other classes.
- /WEB-INF/lib/*.jar, the directory for JAR files containing beans and other utility classes.
- /WEB-INF/web.xml and /WEB-INF/sun-web.xml, XML-based deployment descriptors that specify the web application configuration, including mappings, initialization parameters, and security constraints.
The web application directory structure follows the structure outlined in the J2EE specification. Here is an example directory structure of a simple web application.
+ hello/
|--- index.jsp
|--+ META-INF/
| |--- MANIFEST.MF
'--+ WEB-INF/
|--- web.xml
'--- sun-web.xml
Here is an example directory structure of a simple J2EE application containing a web module.
+ converter_1/
|--- converterClient.jar
|--+ META-INF/
| |--- MANIFEST.MF
| |--- application.xml
| '--- sun-application.xml
|--+ war-ic_war/
| |--- index.jsp
| |--+ META-INF/
| | |--- MANIFEST.MF
| '--+ WEB-INF/
| |--- web.xml
| '--- sun-web.xml
|--+ ejb-jar-ic_jar/
| |--- Converter.class
| |--- ConverterBean.class
| |--- ConverterHome.class
| '--+ META-INF/
| |--- MANIFEST.MF
| |--- ejb-jar.xml
| '--- sun-ejb-jar.xml
'--+ app-client-ic_jar/
|--- ConverterClient.class
'--+ META-INF/
|--- MANIFEST.MF
|--- application-client.xml
'--- sun-application-client.xml
Creating Web Deployment Descriptors
Sun ONE Application Server web modules include two deployment descriptor files:
- A J2EE standard file (web.xml), described in the Java Servlet Specification, v2.3, Chapter 13, "Deployment Descriptors." You can find the specification here:
- An optional Sun ONE Application Server specific file (sun-web.xml), described in this module.
The easiest way to create the web.xml and sun-web.xml files is to deploy a web module using the Administration interface or Sun ONE Studio 4. For more information, see the next section or the Sun ONE Application Server Developer's Guide. For example web.xml and sun-web.xml files, see "Sample Web Module XML Files".
After you have created these files, you can edit them using the Administration interface or a combination of an editor and command line utilities such as Ant to reassemble and redeploy the updated deployment descriptor information. Apache Ant 1.4.1 is provided with Sun ONE Application Server. For more information, see the Sun ONE Application Server Developer's Guide.
Deploying Web Applications
When you deploy, undeploy, or redeploy a web application, you do not need to restart the server. In other words, deployment is dynamic.
You can deploy a web application in these ways, which are described briefly:
For more detailed information about deployment, see the Sun ONE Application Server Developer's Guide.
You can keep the generated source for JSPs by adding the -keepgenerated property to the jsp-config element in sun-web.xml. If you include this property when you deploy the web application, the generated source is kept in instance_dir/generated/jsp/j2ee-apps/app_name/module_name if it is in an application or instance_dir/generated/jsp/j2ee-modules/module_name if it is in an individually deployed web module.
Using the Command Line
To deploy a web application using the command line:
- Edit the deployment descriptor files (web.xml and sun-web.xml) by hand.
- Execute an Ant build command (such as build war) to reassemble the WAR module.
- Write the web application to a WAR file if desired. This is optional. For example:
jar -cvf module_name.war *
- Use the asadmin deploy command to deploy the WAR module. The syntax is as follows:
asadmin deploy --user admin_user [--password admin_password] [--passwordfile password_file] --host hostname --port adminport [--secure | -s] [--virtualservers virtual_servers] [--type application|ejb|web|connector] [--contextroot contextroot] [--force=true] [--precompilejsp=false] [--verify=false] [--name component_name] [--upload=true] [--retrieve local_dirpath] [--instance instance_name] filepath
For example, the following command deploys a web application as an individual module:
asadmin deploy --user jadams --password secret --host localhost --port 4848 --type web --instance server1 myWebApp.war
If upload is set to false, the filepath must be an absolute path on the server machine.
Using the Administration Interface
To deploy a web application using the Administration interface:
- Open the Applications component under your server instance.
- Go to the Web Applications page.
- Click on the Deploy button.
- Enter the full path to the WAR module (or click on Browse to find it), then click on the OK button.
- Enter the web application name and the context root.
You can also redeploy the web application if it already exists by checking the appropriate box. This is optional.
- Assign the web application to one or more virtual servers by checking the boxes next to the virtual server names.
- Click on the OK button.
Using Sun ONE Studio
You can use Sun ONE Studio 4, to assemble and deploy web applications. For more information about using Sun ONE Studio, see the Sun ONE Studio 4, Enterprise Edition Tutorial.
Note In Sun ONE Studio, deploying web application is referred to as executing it.
Dynamic Reloading of Web Applications
If you make code changes to a web application and dynamic reloading is enabled, you do not need to redeploy the web application or restart the server. To enable dynamic reloading, you can do one of the following:
- Use the Administration interface:
Open the Applications component under your server instance.
Check the Reload Enabled box to enable dynamic reloading.
Enter a number of seconds in the Reload Poll Interval field to set the interval at which applications and modules are checked for code changes and dynamically reloaded.
Go to the server instance page and select the Apply Changes button.
For details, see the Sun ONE Application Server Administrator's Guide.
- Edit the following attributes of the server.xml file's applications element, then restart the server:
dynamic-reload-enabled="true" enables dynamic reloading.
dynamic-reload-poll-interval-in-seconds sets the interval at which applications and modules are checked for code changes and dynamically reloaded.
For details about server.xml, see the Sun ONE Application Server Administrator's Configuration File Reference.
In addition, to load new servlet files, reload EJB related changes, or reload deployment descriptor changes, you must do the following:
- Create an empty file named .reload at the root of the deployed application:
instance_dir/applications/j2ee-apps/app_name/.reload
or individually deployed module:
instance_dir/applications/j2ee-modules/module_name/.reload
- Explicitly update the .reload file's timestamp (touch .reload in UNIX) each time you make the above changes.
For JSPs, changes are reloaded automatically at a frequency set in the reload-interval property of the jsp-config element in the sun-web.xml file. To disable dynamic reloading of JSPs, set the reload-interval property to -1.
The sun-web-app_2_3-0.dtd File
The sun-web-app_2_3-0.dtd file defines the structure of the sun-web.xml file, including the elements it can contain and the subelements and attributes these elements can have. The sun-web-app_2_3-0.dtd file is located in the install_dir/lib/dtds directory.
Note Do not edit the sun-web-app_2_3-0.dtd file; its contents change only with new versions of Sun ONE Application Server.
For general information about DTD files and XML, see the XML specification at:
Each element defined in a DTD file (which may be present in the corresponding XML file) can contain the following:
Subelements
Elements can contain subelements. For example, the following file fragment defines the cache element.
<!ELEMENT cache (cache-helper*, default-helper?, property*, cache-mapping*)>
The ELEMENT tag specifies that a cache element can contain cache-helper, default-helper, property, and cache-mapping subelements.
The following table shows how optional suffix characters of subelements determine the requirement rules, or number of allowed occurrences, for the subelements. The left column lists the subelement ending character, and the right column lists the corresponding requirement rule.
If an element cannot contain other elements, you see EMPTY or (#PCDATA) instead of a list of element names in parentheses.
Data
Some elements contain character data instead of subelements. These elements have definitions of the following format:
<!ELEMENT element-name (#PCDATA)>
For example:
<!ELEMENT description (#PCDATA)>
In the sun-web.xml file, white space is treated as part of the data in a data element. Therefore, there should be no extra white space before or after the data delimited by a data element. For example:
<description>class name of session manager</description>
Attributes
Elements that have ATTLIST tags contain attributes (name-value pairs). For example:
<!ATTLIST cache max-capacity CDATA "4096"
timeout CDATA "30"
enabled %boolean; "false">A cache element can contain max-capacity, timeout, and enabled attributes.
The #REQUIRED label means that a value must be supplied. The #IMPLIED label means that the attribute is optional, and that Sun ONE Application Server generates a default value. Wherever possible, explicit defaults for optional attributes (such as "true") are listed.
Attribute declarations specify the type of the attribute. For example, CDATA means character data, and %boolean is a predefined enumeration.
Elements in the sun-web.xml File
This section describes the XML elements in the sun-web.xml file. Elements are grouped as follows:
- General Elements
- Security Elements
- Session Elements
- Reference Elements
- Caching Elements
- Classloader Elements
- JSP Elements
- Internationalization Elements
Note Subelements must be defined in the order in which they are listed under each Subelements heading unless otherwise noted.
General Elements
General elements are as follows:
sun-web-app
Defines Sun ONE Application Server specific configuration for a web module. This is the root element; there can only be one sun-web-app element in a sun-web.xml file.
Subelements
The following table describes subelements for the sun-web-app element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
Attributes
none
Properties
The following table describes properties for the sun-web-app element. The left column lists the property name, the middle column indicates the default value, and the right column describes what the property does.
property
Specifies a property, which has a name and a value. A property adds configuration information to its parent element that is one or both of the following:
- Optional with respect to Sun ONE Application Server
- Needed by a system or object that Sun ONE Application Server doesn't have knowledge of, such as an LDAP server or a Java class
For example, a manager-properties element can include property subelements:
<manager-properties>
<property name="reapIntervalSeconds" value="20" />
</manager-properties>Which properties a manager-properties element uses depends on the value of the parent session-manager element's persistence-type attribute. For details, see the description of the session-manager element.
Subelements
The following table describes subelements for the property element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
   property subelements
Element
Required
Description
zero or one
Specifies an optional text description of a property.
Attributes
The following table describes attributes for the property element. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.
   property attributes
Attribute
Default
Description
name
none
Specifies the name of the property.
value
none
Specifies the value of the property.
description
Contains data that specifies a text description of the containing element.
Subelements
none
Attributes
none
Security Elements
Security elements are as follows:
security-role-mapping
Maps roles to users or groups in the currently active realm. See the Sun ONE Application Server Developer's Guide for how to define the currently active realm.
Subelements
The following table describes subelements for the security-role-mapping element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
Attributes
none
servlet
Specifies a principal name for a servlet, which is used for the run-as role defined in web-xml.
Subelements
The following table describes subelements for the servlet element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
Attributes
none
servlet-name
Contains data that specifies the name of a servlet, which is matched to a servlet-name in web.xml. This name must be present in web.xml.
Subelements
none
Attributes
none
role-name
Contains data that specifies the role-name in the security-role element of the web.xml file.
Subelements
none
Attributes
none
principal-name
Contains data that specifies a principal (user) name in the current realm.
Subelements
none
Attributes
none
group-name
Contains data that specifies a group name in the current realm.
Subelements
none
Attributes
none
Session Elements
Session elements are as follows:
- session-config
- session-manager
- manager-properties
- store-properties
- session-properties
- cookie-properties
session-config
Specifies session configuration information.
Subelements
The following table describes subelements for the session-config element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
Attributes
none
session-manager
Specifies session manager information.
Subelements
The following table describes subelements for the session-manager element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
   session-manager subelements
Element
Required
Description
zero or one
Specifies session manager properties.
zero or one
Specifies session persistence (storage) properties.
Attributes
The following table describes attributes for the session-manager element. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.
manager-properties
Specifies session manager properties.
Subelements
The following table describes subelements for the manager-properties element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
   manager-properties subelements
Element
Required
Description
zero or more
Specifies a property, which has a name and a value.
Attributes
none
Properties
The following table describes properties for the manager-properties element. The left column lists the property name, the middle column indicates the default value, and the right column describes what the property does.
   manager-properties properties
Property Name
Default Value
Description
reapIntervalSeconds
60
Specifies the number of seconds between checks for expired sessions.
Setting this value lower than the frequency at which session data changes is recommended. For example, this value should be as low as possible (1 second) for a hit counter servlet on a frequently accessed website, or you could lose the last few hits each time you restart the server.
maxSessions
-1
Specifies the maximum number of active sessions, or -1 (the default) for no limit.
sessionFilename
none; state is not preserved across restarts
Specifies the absolute or relative pathname of the file in which the session state is preserved between application restarts, if preserving the state is possible. A relative pathname is relative to the temporary directory for this web module.
Applicable only if the persistence-type attribute of the session-manager element is memory.
store-properties
Specifies session persistence (storage) properties.
Subelements
The following table describes subelements for the store-properties element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
   store-properties subelements
Element
Required
Description
zero or more
Specifies a property, which has a name and a value.
Attributes
none
Properties
The following table describes properties for the store-properties element. The left column lists the property name, the middle column indicates the default value, and the right column describes what the property does.
session-properties
Specifies session properties.
Subelements
The following table describes subelements for the session-properties element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
   session-properties subelements
Element
Required
Description
zero or more
Specifies a property, which has a name and a value.
Attributes
none
Properties
The following table describes properties for the session-properties element. The left column lists the property name, the middle column indicates the default value, and the right column describes what the property does.
cookie-properties
Specifies session cookie properties.
Subelements
The following table describes subelements for the cookie-properties element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
   cookie-properties subelements
Element
Required
Description
zero or more
Specifies a property, which has a name and a value.
Attributes
none
Properties
The following table describes properties for the cookie-properties element. The left column lists the property name, the middle column indicates the default value, and the right column describes what the property does.
Reference Elements
Reference elements are as follows:
- resource-env-ref
- resource-env-ref-name
- resource-ref
- res-ref-name
- default-resource-principal
- name
- password
- ejb-ref
- ejb-ref-name
- jndi-name
resource-env-ref
Maps the res-ref-name in the corresponding J2EE web.xml file resource-env-ref entry to the absolute jndi-name of a resource.
Subelements
The following table describes subelements for the resource-env-ref element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
Attributes
none
resource-env-ref-name
Contains data that specifies the res-ref-name in the corresponding J2EE web.xml file resource-env-ref entry.
Subelements
none
Attributes
none
resource-ref
Maps the res-ref-name in the corresponding J2EE web.xml file resource-ref entry to the absolute jndi-name of a resource.
Subelements
The following table describes subelements for the resource-ref element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
Attributes
none
res-ref-name
Contains data that specifies the res-ref-name in the corresponding J2EE web.xml file resource-ref entry.
Subelements
none
Attributes
none
default-resource-principal
Specifies the default principal (user) for the resource.
If this element is used in conjunction with a JMS Connection Factory resource, the name and password subelements must be valid entries in Sun ONE Message Queue's broker user repository. See the "Security Management" chapter in the Sun ONE Message Queue Administrator's Guide for details.
Subelements
The following table describes subelements for the default-resource-principal element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
   default-resource-principal subelements
Element
Required
Description
only one
Contains the name of the principal.
only one
Contains the password for the principal.
Attributes
none
name
Contains data that specifies the name of the principal.
Subelements
none
Attributes
none
password
Contains data that specifies the password for the principal.
Subelements
none
Attributes
none
ejb-ref
Maps the ejb-ref-name in the corresponding J2EE ejb-jar.xml file ejb-ref entry to the absolute jndi-name of a resource.
Subelements
The following table describes subelements for the ejb-ref element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
Attributes
none
ejb-ref-name
Contains data that specifies the ejb-ref-name in the corresponding J2EE ejb-jar.xml file ejb-ref entry.
Subelements
none
Attributes
none
jndi-name
Contains data that specifies the absolute jndi-name of a URL resource or a resource in the server.xml file.
Subelements
none
Attributes
none
Caching Elements
For details about response caching as it pertains to servlets, see "Caching Servlet Results". For details about JSP caching, see "JSP Caching".
Caching elements are as follows:
- cache
- cache-helper
- default-helper
- cache-mapping
- url-pattern
- timeout
- http-method
- key-field
- constraint-field
- value
cache
Configures caching for web application components.
Subelements
The following table describes subelements for the cache element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
   cache subelements
Element
Required
Description
zero or more
Specifies a custom class that implements the CacheHelper interface.
zero or one
Allows you to change the properties of the default, built-in cache-helper class.
zero or more
Specifies a cache property, which has a name and a value.
zero or more
Maps a URL pattern or a servlet name to its cacheability constraints.
Attributes
The following table describes attributes for the cache element. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.
   cache attributes
Attribute
Default Value
Description
max-entries
4096
(optional) Specifies the maximum number of entries the cache can contain. Must be a positive integer.
timeout-in-seconds
30
(optional) Specifies the maximum amount of time in seconds that an entry can remain in the cache after it is created or refreshed. Can be overridden by a timeout element.
enabled
false
(optional) Determines whether servlet and JSP caching is enabled. Legal values are on, off, yes, no, 1, 0, true, false.
Properties
The following table describes properties for the cache element. The left column lists the property name, the middle column indicates the default value, and the right column describes what the property does.
   cache properties
Property
Default Value
Description
cacheClassName
com.sun.appserv.web.cache.LruCache
Specifies the fully qualified name of the class that implements the cache functionality. The "cacheClassName values" table below lists possible values.
MultiLRUSegmentSize
4096
Specifies the number of entries in a segment of the cache table that should have its own LRU (least recently used) list. Applicable only if cacheClassName is set to com.sun.appserv.web.cache.MultiLruCache.
MaxSize
unlimited; Long.MAX_VALUE
Specifies an upper bound on the cache memory size in bytes (KB or MB units). Example values are 32 KB or 2 MB. Applicable only if cacheClassName is set to com.sun.appserv.web.cache.BoundedMultiLruCache.
Cache Class Names
The following table lists possible values of the cacheClassName property. The left column lists the value, and the right column describes the kind of cache the value specifies.
cache-helper
Specifies a class that implements the CacheHelper interface. For details, see "CacheHelper Interface".
Subelements
The following table describes subelements for the cache-helper element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
   cache-helper subelements
Element
Required
Description
zero or more
Specifies a property, which has a name and a value.
Attributes
The following table describes attributes for the cache-helper element. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.
   cache-helper attributes
Attribute
Default Value
Description
name
default
Specifies a unique name for the helper class, which is referenced in the cache-mapping element.
class-name
none
Specifies the fully qualified class name of the cache helper, which must implement the com.sun.appserv.web.CacheHelper interface.
default-helper
Allows you to change the properties of the built-in default cache-helper class.
Subelements
The following table describes subelements for the default-helper element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
   default-helper subelements
Element
Required
Description
zero or more
Specifies a property, which has a name and a value.
Attributes
none
Properties
The following table describes properties for the default-helper element. The left column lists the property name, the middle column indicates the default value, and the right column describes what the property does.
   default-helper properties
Property
Default Value
Description
cacheKeyGeneratorAttrName
Uses the built-in default cache-helper key generation, which concatenates the servlet path with key-field values, if any.
The caching engine looks in the ServletContext for an attribute with a name equal to the value specified for this property to determine whether a customized CacheKeyGenerator implementation is used. An application may provide a customized key generator rather than using the default helper.
cache-mapping
Maps a URL pattern or a servlet name to its cacheability constraints.
Subelements
The following table describes subelements for the cache-mapping element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
   cache-mapping subelements
Element
Required
Description
requires one servlet-name or url-pattern
Contains the name of a servlet.
requires one servlet-name or url-pattern
Contains a servlet URL pattern for which caching is enabled.
required if timeout, refresh-field, http-method, key-field, and constraint-field are not used
Contains the name of the cache-helper used by the parent cache-mapping element.
zero or one if cache-helper-ref is not used
Contains the cache-mapping specific maximum amount of time in seconds that an entry can remain in the cache after it is created or refreshed.
zero or one if cache-helper-ref is not used
Specifies a field that gives the application component a programmatic way to refresh a cached entry.
zero or more if cache-helper-ref is not used
Contains an HTTP method that is eligible for caching.
zero or more if cache-helper-ref is not used
Specifies a component of the key used to look up and extract cache entries.
zero or more if cache-helper-ref is not used
Specifies a cacheability constraint for the given url-pattern or servlet-name.
Attributes
none
url-pattern
Contains data that specifies a servlet URL pattern for which caching is enabled. See the Servlet 2.3 specification section SRV. 11.2 for applicable patterns.
Subelements
none
Attributes
none
cache-helper-ref
Contains data that specifies the name of the cache-helper used by the parent cache-mapping element.
Subelements
none
Attributes
none
timeout
Contains data that specifies the cache-mapping specific maximum amount of time in seconds that an entry can remain in the cache after it is created or refreshed. If not specified, the default is the value of the timeout attribute of the cache element.
Subelements
none
Attributes
The following table describes attributes for the timeout element. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.
refresh-field
Specifies a field that gives the application component a programmatic way to refresh a cached entry.
Subelements
none
Attributes
The following table describes attributes for the refresh-field element. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.
http-method
Contains data that specifies an HTTP method that is eligible for caching. The default is GET.
Subelements
none
Attributes
none
key-field
Specifies a component of the key used to look up and extract cache entries. The web container looks for the named parameter, or field, in the specified scope.
If this element is not present, the web container uses the Servlet Path (the path section that corresponds to the servlet mapping that activated the current request). See the Servlet 2.3 specification, section SRV 4.4, for details on the Servlet Path.
Subelements
none
Attributes
The following table describes attributes for the key-field element. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.
constraint-field
Specifies a cacheability constraint for the given url-pattern or servlet-name.
All constraint-field constraints must pass for a response to be cached. If there are value constraints, at least one of them must pass.
Subelements
The following table describes subelements for the constraint-field element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
   constraint-field subelements
Element
Required
Description
zero or more
Contains a value to be matched to the input parameter value.
Attributes
The following table describes attributes for the constraint-field element. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.
   constraint-field attributes
Attribute
Default Value
Description
name
none
Specifies the input parameter name.
scope
request.parameter
(optional) Specifies the scope in which the input parameter can be present. Allowed values are context.attribute, request.header, request.parameter, request.cookie, request.attribute, and session.attribute.
cache-on-match
true
(optional) If true, caches the response if matching succeeds. Overrides the same attribute in a value subelement.
cache-on-match-failure
false
(optional) If true, caches the response if matching fails. Overrides the same attribute in a value subelement.
value
Contains data that specifies a value to be matched to the input parameter value. The matching is case sensitive. For example:
<value match-expr="in-range">1-60</value>
Subelements
none
Attributes
The following table describes attributes for the value element. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.
Classloader Elements
Classloader elements are as follows:
class-loader
Configures the classloader for the web module.
Subelements
none
Attributes
The following table describes attributes for the class-loader element. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.
JSP Elements
JSP elements are as follows:
jsp-config
Specifies JSP configuration information.
Subelements
The following table describes subelements for the jsp-config element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
   jsp-config subelements
Element
Required
Description
zero or more
Specifies a property.
Attributes
none
Properties
The following table describes properties for the jsp-config element. The left column lists the property name, the middle column indicates the default value, and the right column describes what the property does.
   jsp-config properties
Property Name
Default Value
Description
ieClassId
clsid:8AD9C840-044E-11D1-B3E9-00805F499D93
The Java plugin COM class ID for Internet Explorer. Used by the <jsp:plugin> tags.
javaCompilerPlugin
The internal JDK compiler (javac)
The fully qualified class name of the Java compiler plug-in to be used. Not needed for the default compiler.
For example, to use the jikes compiler for JSP pages, set the javaCompilerPlugin property to org.apache.jasper.compiler.JikesJavaCompiler, then set the javaCompilerPath property to point to the jikes executable.
javaCompilerPath
none
Specifies the path to the executable of an out-of-process Java compiler such as jikes. Ignored for the default compiler. Needed only if the javaCompilerPlugin property is specified.
javaEncoding
UTF8
Specifies the encoding for the generated Java servlet. This encoding is passed to the Java compiler used to compile the servlet as well. By default, the web container tries to use UTF8. If that fails, it tries to use the javaEncoding value.
For encodings you can use, see:
http://java.sun.com/j2se/1.4/docs/guide/intl/ encoding.doc.html
classdebuginfo
false
Specifies whether the generated Java servlets should be compiled with the debug option set (-g for javac).
keepgenerated
true
If set to true, keeps the generated Java files. If false, deletes the Java files.
largefile
false
If set to true, static HTML is stored is a separate data file when a JSP is compiled. This is useful when a JSP is very large, because it minimizes the size of the generated servlet.
mappedfile
false
If set to true, generates separate write calls for each HTML line and comments that describe the location of each line in the JSP file. By default, all adjacent write calls are combined and no location comments are generated.
scratchdir
The default work directory for the web application
The working directory created for storing all the generated code.
reload-interval
0
Specifies the frequency (in seconds) at which JSP files are checked for modifications. Setting this value to 0 checks JSPs for modifications on every request. Setting this value to -1 disables checks for JSP modifications and JSP recompilation.
Internationalization Elements
Internationalization elements are as follows:
locale-charset-info
Specifies information about the application's internationalization settings.
Subelements
The following table describes subelements for the locale-charset-info element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
Attributes
The following table describes attributes for the locale-charset-info element. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.
   locale-charset-info attributes
Attribute
Default Value
Description
default-locale
none
Specifies the default locale.
locale-charset-map
Maps locales and agents to character sets.
For encodings you can use, see:
http://java.sun.com/j2se/1.4/docs/guide/intl/encoding.doc.html
Subelements
The following table describes subelements for the locale-charset-map element. The left column lists the subelement name, the middle column indicates the requirement rule, and the right column describes what the element does.
   locale-charset-map subelements
Element
Required
Description
zero or one
Specifies an optional text description of a mapping.
Attributes
The following table describes attributes for the locale-charset-map element. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.
   locale-charset-map attributes
Attribute
Default Value
Description
locale
none
Specifies the locale name.
agent
none
(optional) Specifies the type of client that interacts with the application server. For a given locale, different agents may have different preferred character sets. The value of this attribute must exactly match the value of the user-agent HTTP request header sent by the client. See the "example agent attribute values" table for more information.
charset
none
Specifies the character set.
Example Agents
The following table specifies example agent attribute values. The left column lists the agent, and the right column lists the corresponding attribute value.
parameter-encoding
Specifies a hidden field that determines the character encoding the web container uses to decode parameters for request.getParameter calls when the charset is not set in the request's content-type.
For encodings you can use, see:
http://java.sun.com/j2se/1.4/docs/guide/intl/encoding.doc.html
Subelements
none
Attributes
The following table describes attributes for the parameter-encoding element. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.
   parameter-encoding attributes
Attribute
Default Value
Description
form-hint-field
none
The name of the hidden field in the form that specifies the parameter encoding.
Sample Web Module XML Files
This section includes the following:
Sample web.xml File
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/j2ee/dtds/web-app_2_2.dtd'>
<web-app>
<display-name>webapps-simple</display-name>
<description>
The jakarta-tomcat-4.0.3 sample apps ports over to S1AS.
</description>
<distributable></distributable>
<servlet>
<servlet-name>HelloWorldExample</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.HelloWorldExample
</servlet-class>
</servlet>
<servlet>
<servlet-name>RequestHeaderExample</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.RequestHeaderExample
</servlet-class>
</servlet>
<servlet>
<servlet-name>SnoopServlet</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.SnoopServlet
</servlet-class>
</servlet>
<servlet>
<servlet-name>servletToJsp</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.servletToJsp
</servlet-class>
</servlet>
<servlet>
<servlet-name>RequestInfoExample</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.RequestInfoExample
</servlet-class>
</servlet>
<servlet>
<servlet-name>SessionExample</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.SessionExample
</servlet-class>
</servlet>
<servlet>
<servlet-name>CookieExample</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.CookieExample
</servlet-class>
</servlet>
<servlet>
<servlet-name>RequestParamExample</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.RequestParamExample
</servlet-class>
</servlet>
<servlet>
<servlet-name>SendMailServlet</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.SendMailServlet
</servlet-class>
</servlet>
<servlet>
<servlet-name>JndiServlet</servlet-name>
<servlet-class>
samples.webapps.simple.servlet.JndiServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldExample</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RequestHeaderExample</servlet-name>
<url-pattern>/requestheader</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SnoopServlet</servlet-name>
<url-pattern>/snoop</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>servletToJsp</servlet-name>
<url-pattern>/servletToJsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RequestInfoExample</servlet-name>
<url-pattern>/requestinfo</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SessionExample</servlet-name>
<url-pattern>/session</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CookieExample</servlet-name>
<url-pattern>/cookie</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RequestParamExample</servlet-name>
<url-pattern>/requestparam</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SendMailServlet</servlet-name>
<url-pattern>/SendMailServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JndiServlet</servlet-name>
<url-pattern>/JndiServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>
http://java.apache.org/tomcat/examples-taglib
</taglib-uri>
<taglib-location>
/WEB-INF/tlds/example-taglib.tld
</taglib-location>
</taglib>
<resource-ref>
<res-ref-name>mail/Session</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<!-- Define the context-relative URL(s) to be protected -->
<url-pattern>/jsp/security/protected/*</url-pattern>
<!-- If you list http methods, only those methods are protected -->
<http-method>DELETE</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
<!-- Anyone with one of the listed roles may access this area -->
<role-name>tomcat</role-name>
<role-name>role1</role-name>
</auth-constraint>
</security-constraint>
<!-- Environment entry examples -->
<env-entry>
<description>
The maximum number of tax exemptions allowed to be set.
</description>
<env-entry-name>maxExemptions</env-entry-name>
<env-entry-value>15</env-entry-value>
<env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
<env-entry>
<env-entry-name>minExemptions</env-entry-name>
<env-entry-value>1</env-entry-value>
<env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
<env-entry>
<env-entry-name>foo/name1</env-entry-name>
<env-entry-value>value1</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
<env-entry>
<env-entry-name>foo/bar/name2</env-entry-name>
<env-entry-value>true</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<env-entry-name>name3</env-entry-name>
<env-entry-value>1</env-entry-value>
<env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
<env-entry>
<env-entry-name>foo/name4</env-entry-name>
<env-entry-value>10</env-entry-value>
<env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
</web-app>
Sample sun-web.xml File
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 7.0 Servlet 2.3//EN' 'http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_3- 0.dtd'>
<sun-web-app>
<session-config>
<session-manager/>
</session-config>
<resource-ref>
<res-ref-name>mail/Session</res-ref-name>
<jndi-name>mail/Session</jndi-name>
</resource-ref>
<jsp-config/>
</sun-web-app>