You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ha...@apache.org on 2002/06/29 19:46:23 UTC
cvs commit: jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks CatalinaSevakImpl.java default-web.xml
hammant 2002/06/29 10:46:23
Modified: sevak/src/conf sevak-assembly.xml
sevak/src/demo/conf sevak-demo-assembly.xml
sevak/src/xdocs book.xml index.xml
Added: sevak/src/java/org/apache/avalon/apps/sevak/blocks/catalina
CatalinaSevakImpl.java default-web.xml
Removed: sevak/src/java/org/apache/avalon/apps/sevak/blocks
CatalinaSevakImpl.java default-web.xml
Log:
Move Catalina into catalina package. Improve xdocs.
Revision Changes Path
1.2 +1 -1 jakarta-avalon-apps/sevak/src/conf/sevak-assembly.xml
Index: sevak-assembly.xml
===================================================================
RCS file: /home/cvs/jakarta-avalon-apps/sevak/src/conf/sevak-assembly.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- sevak-assembly.xml 28 Jun 2002 05:05:06 -0000 1.1
+++ sevak-assembly.xml 29 Jun 2002 17:46:23 -0000 1.2
@@ -3,5 +3,5 @@
"http://jakarta.apache.org/phoenix/assembly_1_0.dtd">
<assembly>
- <block class="org.apache.avalon.apps.sevak.blocks.CatalinaSevakImpl" name="sevak"/>
+ <block class="org.apache.avalon.apps.sevak.blocks.catalina.CatalinaSevakImpl" name="sevak"/>
</assembly>
1.2 +1 -1 jakarta-avalon-apps/sevak/src/demo/conf/sevak-demo-assembly.xml
Index: sevak-demo-assembly.xml
===================================================================
RCS file: /home/cvs/jakarta-avalon-apps/sevak/src/demo/conf/sevak-demo-assembly.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- sevak-demo-assembly.xml 28 Jun 2002 05:04:52 -0000 1.1
+++ sevak-demo-assembly.xml 29 Jun 2002 17:46:23 -0000 1.2
@@ -3,7 +3,7 @@
"http://jakarta.apache.org/phoenix/assembly_1_0.dtd">
<assembly>
- <block class="org.apache.avalon.apps.sevak.blocks.CatalinaSevakImpl" name="sevak"/>
+ <block class="org.apache.avalon.apps.sevak.blocks.catalina.CatalinaSevakImpl" name="sevak"/>
<block class="org.apache.avalon.apps.sevak.demo.SevakTest" name="sevakTest">
<provide name="sevak" role="org.apache.avalon.apps.sevak.Sevak"/>
</block>
1.2 +3 -3 jakarta-avalon-apps/sevak/src/xdocs/book.xml
Index: book.xml
===================================================================
RCS file: /home/cvs/jakarta-avalon-apps/sevak/src/xdocs/book.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- book.xml 28 Jun 2002 05:01:26 -0000 1.1
+++ book.xml 29 Jun 2002 17:46:23 -0000 1.2
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<book software="Avalon Applications"
- title="Avalon Applications Documentation - Applications / Sevak - A Catalina Wrapper"
+ title="Avalon Applications Documentation - Applications / Sevak"
copyright="@year@ The Apache Software Foundation">
<project label="Back to Avalon" href="@AVALON_BASE@" />
@@ -9,8 +9,8 @@
<menu label="About">
<menu-item label="Overview" href="index.html"/>
- <menu-item type="external" label="API Docs" href="http://jakarta.apache.org/avalon"/>
- <menu-item type="external" id="downloads" label="Download" href="http://cvs.apache.org/~vinayc/"/>
+ <menu-item type="external" label="API Docs" href="http://hack.hack"/>
+ <menu-item type="external" id="downloads" label="Download" href="http://cvs.apache.org/~hammant/"/>
</menu>
</book>
1.4 +21 -1 jakarta-avalon-apps/sevak/src/xdocs/index.xml
Index: index.xml
===================================================================
RCS file: /home/cvs/jakarta-avalon-apps/sevak/src/xdocs/index.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- index.xml 29 Jun 2002 13:20:21 -0000 1.3
+++ index.xml 29 Jun 2002 17:46:23 -0000 1.4
@@ -7,6 +7,7 @@
<title>Avalon Applications / Sevak</title>
<subtitle>Introduction</subtitle>
<authors>
+ <person name="Vinay Chandran" email="vinayc@apache.org"/>
<person name="Avalon Documentation Team" email="avalon-dev@jakarta.apache.org"/>
</authors>
</header>
@@ -16,8 +17,21 @@
Sevak is a wrapper for Tomcat Catalina server in a Phoenix machine.
<link href="http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.3/">
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.3/</link>
+ It launches Catalina under Phoenix control in embedded mode.
</p>
</s1>
+ <s1 title="Usage">
+ <p>
+ To use Sevak, you will need to have tools.jar placed in the lib directory of
+ Phoenix. This is not unusual as a requirement as applications like the excellent
+ OrionServer have the same requirement. This will enable JSP processing. You will
+ find it in JAVA_HOME/lib/. We can't include this in the SAR file for two reasons.
+ The first is because it is part of the Java runtime environment and we have no
+ permission to distribute that given it is copyright of Sun Microsystems. The
+ second reason is that it is tied to the version of Java you are running. We can't
+ provide a different base SAR for each version of the JDK (1.2, 1.2.2, 1,3, 1,3,1 ..)
+ </p>
+ </s1>
<s1 title="Blocks">
<p>
There are two blocks delivered with Sevak. The first is the block that provides
@@ -25,6 +39,12 @@
org.apache.avalon.apps.sevak.blocks.CatalinaSevakImpl. The second is one uses the
first to mount Catalina's demo apps. The block class is
org.apache.avalon.apps.sevak.demo.SevakTest.
+ </p>
+ </s1>
+ <s1 title="Plans">
+ <p>
+ Given that there are other servlet capable web servers out there, we plan to
+ provide multiple implementations of Sevak for Jetty and Jo!.
</p>
</s1>
</body>
1.1 jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/catalina/CatalinaSevakImpl.java
Index: CatalinaSevakImpl.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.avalon.apps.sevak.blocks.catalina;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import org.apache.avalon.apps.sevak.Sevak;
import org.apache.avalon.apps.sevak.SevakException;
import org.apache.avalon.apps.sevak.util.CatalinaLogger;
import org.apache.avalon.apps.sevak.util.CustomWebappLoader;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.avalon.phoenix.BlockContext;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.Loader;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.startup.ContextConfig;
import org.apache.catalina.startup.Embedded;
import org.apache.coyote.tomcat4.CoyoteConnector;
/**
* @phoenix:block
* @phoenix:service name="org.apache.avalon.apps.sevak.Sevak"
*
* Tomcat Wrapper.
*
*
* @see <a href="http://jakarta.apache.org/tomcat">Tomcat Project Page</a>
*
* @author Vinay Chandran<vi...@yahoo.com>
* @version 1.0
*/
public class CatalinaSevakImpl
extends AbstractLogEnabled
implements Contextualizable, Serviceable, Configurable, Initializable, Sevak
{
private BlockContext m_context;
private Configuration m_configuration;
private Engine m_engine = null;
private Embedded m_embedded = null;
private Host m_tomcatHost = null;
private Loader m_catalinaCustomClassLoader = null;
private int m_port;
private String m_host = null;
/**
* @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
*/
public void contextualize(final Context context)
{
getLogger().info("Sevak.contextualize()");
m_context = (BlockContext) context;
}
/**
* @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
*/
public void configure(final Configuration configuration)
throws ConfigurationException
{
m_configuration = configuration;
}
/**
* @see org.apache.avalon.framework.service.Serviceable
*
*/
public void service(final ServiceManager serviceManager)
throws ServiceException
{
getLogger().info("Sevak.service()");
}
/**
* @see org.apache.avalon.framework.activity.Initializable#initialize()
*/
public void initialize() throws Exception
{
getLogger().info("Sevak.initialize()");
//create the Logger
CatalinaLogger catalinaLogger = new CatalinaLogger();
catalinaLogger.enableLogging(getLogger());
//create the Custom ClassLoader
m_catalinaCustomClassLoader =
new CustomWebappLoader(this.getClass().getClassLoader());
//read the configuration properties
String catalinaHome =
m_configuration.getChild("catalina.home").getValue(null);
if (catalinaHome == null)
{
catalinaHome=m_context.getBaseDirectory().getAbsolutePath();
//Creating a conf/ folder and dumping the default web.xml
File confDir=new File(m_context.getBaseDirectory(),"conf");
confDir.mkdir();
getLogger().info("Created conf/ folder");
InputStream in= CatalinaSevakImpl.class.getResourceAsStream("default-web.xml");
FileOutputStream fos =
new FileOutputStream(new File(confDir,"web.xml").getAbsolutePath());
byte[] bytes= new byte[512];
int read=0;
while((read=in.read(bytes))!=-1)
{
fos.write(bytes,0,read);
}
fos.close();
in.close();
}
/*
* TODO : Hack Tomcat to be able to run without the catalina.home property set
{
System.out.println(
"catalina.home property Not Found. Using : "
+ m_context.getBaseDirectory().getAbsolutePath());
catalinaHome = m_context.getBaseDirectory().getAbsolutePath();
}
*/
m_port = m_configuration.getChild("port").getValueAsInteger(8080);
m_host = m_configuration.getChild("bind").getValue("localhost");
//set the catalina home directory
System.setProperty("catalina.home", new File(catalinaHome).getAbsolutePath());
// Create an Embedded Tomcat server
m_embedded = new Embedded();
m_embedded.setDebug(0);
m_embedded.setLogger(catalinaLogger);
//Create Tomcat Engine
m_engine = m_embedded.createEngine();
m_engine.setDefaultHost("localhost");
// Create Tomcat Host
m_tomcatHost = m_embedded.createHost("localhost", "webapps");
m_engine.addChild(m_tomcatHost);
// Create HTTP Coyote Connector
CoyoteConnector coyoteConnector = new CoyoteConnector();
coyoteConnector.setPort(8080);
coyoteConnector.setMinProcessors(5);
coyoteConnector.setMaxProcessors(75);
coyoteConnector.setEnableLookups(true);
coyoteConnector.setAcceptCount(10);
coyoteConnector.setDebug(0);
coyoteConnector.setConnectionTimeout(20000);
coyoteConnector.setUseURIValidationHack(false);
m_embedded.addEngine(m_engine);
m_embedded.addConnector(coyoteConnector);
//START Tomcat Instance
try
{
m_embedded.start();
}
catch (LifecycleException le)
{
le.printStackTrace();
throw new ConfigurationException("[FATAL] Could Not START Tomcat ");
}
}
/**
* Deploy the given Web Application
* @param context Context for the the webapp
* @param dirToWebAppFolder path can be a war-archive or exploded directory
* @throws org.apache.avalon.apps.sevak.SevakException Thrown when the context already exists
*/
public void deploy(String context, File dirToWebAppFolder)
throws SevakException
{
if (!dirToWebAppFolder.exists())
{
throw new SevakException(
"Path not Found[" + dirToWebAppFolder + "]");
}
try
{
if (context == null)
{
throw new SevakException("Invalid Context[" + context + "]");
}
if (context.equals("/"))
{
context = "";
}
if (dirToWebAppFolder == null)
{
throw new SevakException(
"Invalid WAR [" + dirToWebAppFolder + "]");
}
//now deploy ....
org.apache.catalina.Context catalinaContext =
(org.apache.catalina.Context) m_tomcatHost.findChild(context);
if (catalinaContext != null)
{
throw new Exception("Context " + context + " Already Exists!");
}
catalinaContext =
createContext(context, dirToWebAppFolder.getAbsolutePath());
m_tomcatHost.addChild(catalinaContext);
System.out.println("Deployed [" + context + "] Context");
}
catch (Exception catalinaException)
{
throw new SevakException(
"Catalina Internal Error",
catalinaException);
}
}
/**
* Undeploy the given WebApp
* @param context Webapp context
* @throws org.apache.avalon.apps.sevak.SevakException Thrown when context does NOT exist
*/
public void undeploy(String context) throws SevakException
{
if (context == null)
{
throw new SevakException("Invalid Context[" + context + "]");
}
if (context.equals("/"))
{
context = "";
}
org.apache.catalina.Context catalinaContext =
(org.apache.catalina.Context) m_tomcatHost.findChild(context);
if (catalinaContext == null)
{
throw new SevakException("Context " + context + " does NOT Exist");
}
m_tomcatHost.removeChild(catalinaContext);
}
/**
* Create a StandardContext
* @param path
* @param docBase
* @return Context
*/
private org.apache.catalina.Context createContext(
String path,
String docBase)
{
StandardContext context = new StandardContext();
context.setDebug(0);
context.setDocBase(docBase);
context.setPath(path);
context.setLoader(m_catalinaCustomClassLoader);
ContextConfig config = new ContextConfig();
config.setDebug(0);
((Lifecycle) context).addLifecycleListener(config);
return (context);
}
}
1.1 jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/catalina/default-web.xml
Index: default-web.xml
===================================================================
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<!-- ======================== Introduction ============================== -->
<!-- This document defines default values for *all* web applications -->
<!-- loaded into this instance of Tomcat. As each application is -->
<!-- deployed, this file is processed, followed by the -->
<!-- "/WEB-INF/web.xml" deployment descriptor from your own -->
<!-- applications. -->
<!-- -->
<!-- WARNING: Do not configure application-specific resources here! -->
<!-- They should go in the "/WEB-INF/web.xml" file in your application. -->
<!-- ================== Built In Servlet Definitions ==================== -->
<!-- The default servlet for all web applications, that serves static -->
<!-- resources. It processes all requests that are not mapped to other -->
<!-- servlets with servlet mappings (defined either here or in your own -->
<!-- web.xml file. This servlet supports the following initialization -->
<!-- parameters (default values are in square brackets): -->
<!-- -->
<!-- debug Debugging detail level for messages logged -->
<!-- by this servlet. [0] -->
<!-- -->
<!-- input Input buffer size (in bytes) when reading -->
<!-- resources to be served. [2048] -->
<!-- -->
<!-- listings Should directory listings be produced if there -->
<!-- is no welcome file in this directory? [true] -->
<!-- -->
<!-- output Output buffer size (in bytes) when writing -->
<!-- resources to be served. [2048] -->
<!-- -->
<!-- readonly Is this context "read only", so HTTP -->
<!-- commands like PUT and DELETE are -->
<!-- rejected? [true] -->
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- The "invoker" servlet, which executes anonymous servlet classes -->
<!-- that have not been defined in a web.xml file. Traditionally, this -->
<!-- servlet is mapped to URL pattern "/servlet/*", but you can map it -->
<!-- to other patterns as well. The extra path info portion of such a -->
<!-- request must be the fully qualified class name of a Java class that -->
<!-- implements Servlet (or extends HttpServlet), or the servlet name -->
<!-- of an existing servlet definition. This servlet supports the -->
<!-- following initialization parameters (default values are in square -->
<!-- brackets): -->
<!-- -->
<!-- debug Debugging detail level for messages logged -->
<!-- by this servlet. [0] -->
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- The JSP page compiler and execution servlet, which is the mechanism -->
<!-- used by Tomcat to support JSP pages. Traditionally, this servlet -->
<!-- is mapped to URL patterh "*.jsp". This servlet supports the -->
<!-- following initialization parameters (default values are in square -->
<!-- brackets): -->
<!-- -->
<!-- classdebuginfo Should the class file be compiled with -->
<!-- debugging information? [false] -->
<!-- -->
<!-- classpath What class path should I use while compiling -->
<!-- generated servlets? [Created dynamically -->
<!-- based on the current web application] -->
<!-- -->
<!-- ieClassId The class-id value to be sent to Internet -->
<!-- Explorer when using <jsp:plugin> tags. -->
<!-- [clsid:8AD9C840-044E-11D1-B3E9-00805F499D93] -->
<!-- -->
<!-- jspCompilerPlugin The fully qualified class name of the JSP -->
<!-- compiler plug-in to be used. See below for -->
<!-- more information. -->
<!-- [Use internal JDK compiler] -->
<!-- -->
<!-- keepgenerated Should we keep the generated Java source code -->
<!-- for each page instead of deleting it? [true] -->
<!-- -->
<!-- largefile Should we store the static content of JSP -->
<!-- pages in external data files, to reduce the -->
<!-- size of the generated servlets? [false] -->
<!-- -->
<!-- logVerbosityLevel The level of detailed messages to be produced -->
<!-- by this servlet. Increasing levels cause the -->
<!-- generation of more messages. Valid values are -->
<!-- FATAL, ERROR, WARNING, INFORMATION, and DEBUG. -->
<!-- [WARNING] -->
<!-- -->
<!-- mappedfile Should we generate static content with one -->
<!-- print statement per input line, to ease -->
<!-- debugging? [false] -->
<!-- -->
<!-- scratchdir What scratch directory should we use when -->
<!-- compiling JSP pages? [default work directory -->
<!-- for the current web application] -->
<!-- -->
<!-- If you wish to use Jikes to compile JSP pages: -->
<!-- * Set the "classpath" initialization parameter appropriately -->
<!-- for this web application. -->
<!-- * Set the "jspCompilerPlugin" initialization parameter to -->
<!-- "org.apache.jasper.compiler.JikesJavaCompiler". -->
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>logVerbosityLevel</param-name>
<param-value>WARNING</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<!-- Server Side Includes processing servlet, which processes SSI -->
<!-- directives in HTML pages consistent with similar support in web -->
<!-- servers like Apache. Traditionally, this servlet is mapped to -->
<!-- URL pattern "*.shtml". This servlet supports the following -->
<!-- initialization parameters (default values are in square brackets): -->
<!-- -->
<!-- buffered Should output from this servlet be buffered? -->
<!-- (0=false, 1=true) [0] -->
<!-- -->
<!-- debug Debugging detail level for messages logged -->
<!-- by this servlet. [0] -->
<!-- -->
<!-- expires The number of seconds before a page with SSI -->
<!-- directives will expire. [No default] -->
<!-- -->
<!-- isVirtualWebappRelative -->
<!-- Should "virtual" paths be interpreted as -->
<!-- relative to the context root, instead of -->
<!-- the server root? (0=false, 1=true) [0] -->
<!-- -->
<!-- ignoreUnsupportedDirective -->
<!-- Should unknown or misspelled Ssi directives -->
<!-- be ignored and no errors shown? -->
<!-- (0=false, 1=true) [1] -->
<!-- -->
<!-- IMPORTANT: To use the SSI servlet, you also need to rename the -->
<!-- $CATALINA_HOME/server/lib/servlets-ssi.renametojar file -->
<!-- to $CATALINA_HOME/server/lib/servlets-ssi.jar -->
<!--
<servlet>
<servlet-name>ssi</servlet-name>
<servlet-class>
org.apache.catalina.servlets.SsiInvokerServlet
</servlet-class>
<init-param>
<param-name>buffered</param-name>
<param-value>1</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>expires</param-name>
<param-value>666</param-value>
</init-param>
<init-param>
<param-name>isVirtualWebappRelative</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>ignoreUnsupportedDirective</param-name>
<param-value>1</param-value>
</init-param>
<load-on-startup>4</load-on-startup>
</servlet>
-->
<!-- Common Gateway Includes (CGI) processing servlet, which supports -->
<!-- execution of external applications that conform to the CGI spec -->
<!-- requirements. Typically, this servlet is mapped to the URL pattern -->
<!-- "/cgi-bin/*", which means that any CGI applications that are -->
<!-- executed must be present within the web application. This servlet -->
<!-- supports the following initialization parameters (default values -->
<!-- are in square brackets): -->
<!-- -->
<!-- cgiPathPrefix The CGI search path will start at -->
<!-- webAppRootDir + File.separator + this prefix. -->
<!-- [WEB-INF/cgi] -->
<!-- -->
<!-- clientInputTimeout The time (in milliseconds) to wait for input -->
<!-- from the browser before assuming that there -->
<!-- is none. [100] -->
<!-- -->
<!-- debug Debugging detail level for messages logged -->
<!-- by this servlet. [0] -->
<!-- -->
<!-- IMPORTANT: To use the CGI servlet, you also need to rename the -->
<!-- $CATALINA_HOME/server/lib/servlets-cgi.renametojar file -->
<!-- to $CATALINA_HOME/server/lib/servlets-cgi.jar -->
<!--
<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>clientInputTimeout</param-name>
<param-value>100</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>6</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
-->
<!-- ================ Built In Servlet Mappings ========================= -->
<!-- The servlet mappings for the built in servlets defined above. Note -->
<!-- that, by default, the CGI and SSI servlets are *not* mapped. You -->
<!-- must uncomment these mappings (or add them to your application's own -->
<!-- web.xml deployment descriptor) to enable these services -->
<!-- The mapping for the default servlet -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- The mapping for the invoker servlet -->
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
<!-- The mapping for the JSP servlet -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<!-- The mapping for the SSI servlet -->
<!--
<servlet-mapping>
<servlet-name>ssi</servlet-name>
<url-pattern>*.shtml</url-pattern>
</servlet-mapping>
-->
<!-- The mapping for the CGI Gateway servlet -->
<!--
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
-->
<!-- ==================== Default Session Configuration ================= -->
<!-- You can set the default session timeout (in minutes) for all newly -->
<!-- created sessions by modifying the value below. -->
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<!-- ===================== Default MIME Type Mappings =================== -->
<!-- When serving static resources, Tomcat will automatically generate -->
<!-- a "Content-Type" header based on the resource's filename extension, -->
<!-- based on these mappings. Additional mappings can be added here (to -->
<!-- apply to all web applications), or in your own application's web.xml -->
<!-- deployment descriptor. -->
<mime-mapping>
<extension>abs</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ai</extension>
<mime-type>application/postscript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aif</extension>
<mime-type>audio/x-aiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aifc</extension>
<mime-type>audio/x-aiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aiff</extension>
<mime-type>audio/x-aiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aim</extension>
<mime-type>application/x-aim</mime-type>
</mime-mapping>
<mime-mapping>
<extension>art</extension>
<mime-type>image/x-jg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>asf</extension>
<mime-type>video/x-ms-asf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>asx</extension>
<mime-type>video/x-ms-asf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>au</extension>
<mime-type>audio/basic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>avi</extension>
<mime-type>video/x-msvideo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>avx</extension>
<mime-type>video/x-rad-screenplay</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bcpio</extension>
<mime-type>application/x-bcpio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bin</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bmp</extension>
<mime-type>image/bmp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>body</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cdf</extension>
<mime-type>application/x-cdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cer</extension>
<mime-type>application/x-x509-ca-cert</mime-type>
</mime-mapping>
<mime-mapping>
<extension>class</extension>
<mime-type>application/java</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cpio</extension>
<mime-type>application/x-cpio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>csh</extension>
<mime-type>application/x-csh</mime-type>
</mime-mapping>
<mime-mapping>
<extension>css</extension>
<mime-type>text/css</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dib</extension>
<mime-type>image/bmp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>doc</extension>
<mime-type>application/msword</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dtd</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dv</extension>
<mime-type>video/x-dv</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dvi</extension>
<mime-type>application/x-dvi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>eps</extension>
<mime-type>application/postscript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>etx</extension>
<mime-type>text/x-setext</mime-type>
</mime-mapping>
<mime-mapping>
<extension>exe</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gif</extension>
<mime-type>image/gif</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gtar</extension>
<mime-type>application/x-gtar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gz</extension>
<mime-type>application/x-gzip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hdf</extension>
<mime-type>application/x-hdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hqx</extension>
<mime-type>application/mac-binhex40</mime-type>
</mime-mapping>
<mime-mapping>
<extension>htc</extension>
<mime-type>text/x-component</mime-type>
</mime-mapping>
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hqx</extension>
<mime-type>application/mac-binhex40</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ief</extension>
<mime-type>image/ief</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jad</extension>
<mime-type>text/vnd.sun.j2me.app-descriptor</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jar</extension>
<mime-type>application/java-archive</mime-type>
</mime-mapping>
<mime-mapping>
<extension>java</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jnlp</extension>
<mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpe</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpeg</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpg</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>js</extension>
<mime-type>text/javascript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kar</extension>
<mime-type>audio/x-midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>latex</extension>
<mime-type>application/x-latex</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m3u</extension>
<mime-type>audio/x-mpegurl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mac</extension>
<mime-type>image/x-macpaint</mime-type>
</mime-mapping>
<mime-mapping>
<extension>man</extension>
<mime-type>application/x-troff-man</mime-type>
</mime-mapping>
<mime-mapping>
<extension>me</extension>
<mime-type>application/x-troff-me</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mid</extension>
<mime-type>audio/x-midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>midi</extension>
<mime-type>audio/x-midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mif</extension>
<mime-type>application/x-mif</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mov</extension>
<mime-type>video/quicktime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>movie</extension>
<mime-type>video/x-sgi-movie</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp1</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp2</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp3</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpa</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpe</extension>
<mime-type>video/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpeg</extension>
<mime-type>video/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpega</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpg</extension>
<mime-type>video/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpv2</extension>
<mime-type>video/mpeg2</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ms</extension>
<mime-type>application/x-wais-source</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nc</extension>
<mime-type>application/x-netcdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>oda</extension>
<mime-type>application/oda</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pbm</extension>
<mime-type>image/x-portable-bitmap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pct</extension>
<mime-type>image/pict</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pdf</extension>
<mime-type>application/pdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pgm</extension>
<mime-type>image/x-portable-graymap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pic</extension>
<mime-type>image/pict</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pict</extension>
<mime-type>image/pict</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pls</extension>
<mime-type>audio/x-scpls</mime-type>
</mime-mapping>
<mime-mapping>
<extension>png</extension>
<mime-type>image/png</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pnm</extension>
<mime-type>image/x-portable-anymap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pnt</extension>
<mime-type>image/x-macpaint</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ppm</extension>
<mime-type>image/x-portable-pixmap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ps</extension>
<mime-type>application/postscript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>psd</extension>
<mime-type>image/x-photoshop</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qt</extension>
<mime-type>video/quicktime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qti</extension>
<mime-type>image/x-quicktime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qtif</extension>
<mime-type>image/x-quicktime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ras</extension>
<mime-type>image/x-cmu-raster</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rgb</extension>
<mime-type>image/x-rgb</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rm</extension>
<mime-type>application/vnd.rn-realmedia</mime-type>
</mime-mapping>
<mime-mapping>
<extension>roff</extension>
<mime-type>application/x-troff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rtf</extension>
<mime-type>application/rtf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rtx</extension>
<mime-type>text/richtext</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sh</extension>
<mime-type>application/x-sh</mime-type>
</mime-mapping>
<mime-mapping>
<extension>shar</extension>
<mime-type>application/x-shar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>smf</extension>
<mime-type>audio/x-midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>snd</extension>
<mime-type>audio/basic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>src</extension>
<mime-type>application/x-wais-source</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sv4cpio</extension>
<mime-type>application/x-sv4cpio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sv4crc</extension>
<mime-type>application/x-sv4crc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>swf</extension>
<mime-type>application/x-shockwave-flash</mime-type>
</mime-mapping>
<mime-mapping>
<extension>t</extension>
<mime-type>application/x-troff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tar</extension>
<mime-type>application/x-tar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tcl</extension>
<mime-type>application/x-tcl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tex</extension>
<mime-type>application/x-tex</mime-type>
</mime-mapping>
<mime-mapping>
<extension>texi</extension>
<mime-type>application/x-texinfo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>texinfo</extension>
<mime-type>application/x-texinfo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tif</extension>
<mime-type>image/tiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tiff</extension>
<mime-type>image/tiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tr</extension>
<mime-type>application/x-troff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tsv</extension>
<mime-type>text/tab-separated-values</mime-type>
</mime-mapping>
<mime-mapping>
<extension>txt</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ulw</extension>
<mime-type>audio/basic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ustar</extension>
<mime-type>application/x-ustar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xbm</extension>
<mime-type>image/x-xbitmap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xpm</extension>
<mime-type>image/x-xpixmap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xwd</extension>
<mime-type>image/x-xwindowdump</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wav</extension>
<mime-type>audio/x-wav</mime-type>
</mime-mapping>
<mime-mapping>
<!-- Wireless Bitmap -->
<extension>wbmp</extension>
<mime-type>image/vnd.wap.wbmp</mime-type>
</mime-mapping>
<mime-mapping>
<!-- WML Source -->
<extension>wml</extension>
<mime-type>text/vnd.wap.wml</mime-type>
</mime-mapping>
<mime-mapping>
<!-- Compiled WML -->
<extension>wmlc</extension>
<mime-type>application/vnd.wap.wmlc</mime-type>
</mime-mapping>
<mime-mapping>
<!-- WML Script Source -->
<extension>wmls</extension>
<mime-type>text/vnd.wap.wmls</mime-type>
</mime-mapping>
<mime-mapping>
<!-- Compiled WML Script -->
<extension>wmlscriptc</extension>
<mime-type>application/vnd.wap.wmlscriptc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wrl</extension>
<mime-type>x-world/x-vrml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>Z</extension>
<mime-type>application/x-compress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>z</extension>
<mime-type>application/x-compress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>zip</extension>
<mime-type>application/zip</mime-type>
</mime-mapping>
<!-- ==================== Default Welcome File List ===================== -->
<!-- When a request URI refers to a directory, the default servlet looks -->
<!-- for a "welcome file" within that directory and, if present, -->
<!-- to the corresponding resource URI for display. If no welcome file -->
<!-- is present, the default servlet either serves a directory listing, -->
<!-- or returns a 404 status, depending on how it is configured. -->
<!-- -->
<!-- If you define welcome files in your own application's web.xml -->
<!-- deployment descriptor, that list *replaces* the list configured -->
<!-- here, so be sure that you include any of the default values that -->
<!-- you wish to include. -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>