You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by James Dekker <ja...@gmail.com> on 2007/01/14 12:20:51 UTC

Help loading XML config file via Init Servlet

Hello there,

I am using the Apache Commons Digester to load an XML config file via  
a servlet with init params...

I keep getting this error when I start Tomcat 5.5.9 and have deployed  
the war file via my build script:

INFO: Deploying web application archive coffeebreak.war
2007-01-14 03:10:33,050 WARN  
[org.coffeebreak.logging.Log4jInitServlet] - Loaded: log4j.properties  
file
attributes-config.xml not found, /Developer/JavaTools/tomcat/jakarta- 
tomcat-5.5.9/bin/WEB-INF/classes/org/coffeebreak/config/attributes- 
config.xml
2007-01-14 03:10:33,074 WARN  
[org.coffeebreak.helper.AttributeBeanXmlConfigHelper] - rules: null
org.apache.commons.digester.xmlrules.XmlLoadException
	at org.apache.commons.digester.xmlrules.FromXmlRuleSet 
$URLXMLRulesLoader.loadRules(FromXmlRuleSet.java:199)
	at  
org.apache.commons.digester.xmlrules.FromXmlRuleSet.addRuleInstances 
(FromXmlRuleSet.java:176)
	at  
org.apache.commons.digester.xmlrules.FromXmlRuleSet.addRuleInstances 
(FromXmlRuleSet.java:141)
	at org.apache.commons.digester.Digester.addRuleSet(Digester.java:1998)
	at org.apache.commons.digester.xmlrules.DigesterLoader.createDigester 
(DigesterLoader.java:80)
	at org.coffeebreak.helper.AttributeBeanXmlConfigHelper.parse 
(AttributeBeanXmlConfigHelper.java:29)
	at org.coffeebreak.config.XmlConfigInitServlet.init 
(XmlConfigInitServlet.java:22)
	at javax.servlet.GenericServlet.init(GenericServlet.java:211)
	at org.apache.catalina.core.StandardWrapper.loadServlet 
(StandardWrapper.java:1091)
	at org.apache.catalina.core.StandardWrapper.load 
(StandardWrapper.java:925)
	at org.apache.catalina.core.StandardContext.loadOnStartup 
(StandardContext.java:3857)
	at org.apache.catalina.core.StandardContext.start 
(StandardContext.java:4118)
	at org.apache.catalina.core.ContainerBase.addChildInternal 
(ContainerBase.java:759)
	at org.apache.catalina.core.ContainerBase.addChild 
(ContainerBase.java:739)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java: 
524)
	at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java: 
788)
	at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java: 
677)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java: 
473)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1102)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent 
(HostConfig.java:311)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent 
(LifecycleSupport.java:119)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 
1020)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 
1012)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java: 
442)
	at org.apache.catalina.core.StandardService.start 
(StandardService.java:450)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java: 
683)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
Caused by: java.lang.NullPointerException
	at org.apache.commons.digester.xmlrules.FromXmlRuleSet 
$URLXMLRulesLoader.loadRules(FromXmlRuleSet.java:197)
	... 33 more
java.lang.NullPointerException
	at org.apache.commons.digester.xmlrules.FromXmlRuleSet 
$URLXMLRulesLoader.loadRules(FromXmlRuleSet.java:197)
	at  
org.apache.commons.digester.xmlrules.FromXmlRuleSet.addRuleInstances 
(FromXmlRuleSet.java:176)
	at  
org.apache.commons.digester.xmlrules.FromXmlRuleSet.addRuleInstances 
(FromXmlRuleSet.java:141)
	at org.apache.commons.digester.Digester.addRuleSet(Digester.java:1998)
	at org.apache.commons.digester.xmlrules.DigesterLoader.createDigester 
(DigesterLoader.java:80)
	at org.coffeebreak.helper.AttributeBeanXmlConfigHelper.parse 
(AttributeBeanXmlConfigHelper.java:29)
	at org.coffeebreak.config.XmlConfigInitServlet.init 
(XmlConfigInitServlet.java:22)
	at javax.servlet.GenericServlet.init(GenericServlet.java:211)
	at org.apache.catalina.core.StandardWrapper.loadServlet 
(StandardWrapper.java:1091)
	at org.apache.catalina.core.StandardWrapper.load 
(StandardWrapper.java:925)
	at org.apache.catalina.core.StandardContext.loadOnStartup 
(StandardContext.java:3857)
	at org.apache.catalina.core.StandardContext.start 
(StandardContext.java:4118)
	at org.apache.catalina.core.ContainerBase.addChildInternal 
(ContainerBase.java:759)
	at org.apache.catalina.core.ContainerBase.addChild 
(ContainerBase.java:739)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java: 
524)
	at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java: 
788)
	at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java: 
677)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java: 
473)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1102)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent 
(HostConfig.java:311)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent 
(LifecycleSupport.java:119)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 
1020)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 
1012)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java: 
442)
	at org.apache.catalina.core.StandardService.start 
(StandardService.java:450)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java: 
683)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
java.lang.NullPointerException
	at org.coffeebreak.helper.AttributeBeanXmlConfigHelper.parse 
(AttributeBeanXmlConfigHelper.java:38)
	at org.coffeebreak.config.XmlConfigInitServlet.init 
(XmlConfigInitServlet.java:22)
	at javax.servlet.GenericServlet.init(GenericServlet.java:211)
	at org.apache.catalina.core.StandardWrapper.loadServlet 
(StandardWrapper.java:1091)
	at org.apache.catalina.core.StandardWrapper.load 
(StandardWrapper.java:925)
	at org.apache.catalina.core.StandardContext.loadOnStartup 
(StandardContext.java:3857)
	at org.apache.catalina.core.StandardContext.start 
(StandardContext.java:4118)
	at org.apache.catalina.core.ContainerBase.addChildInternal 
(ContainerBase.java:759)
	at org.apache.catalina.core.ContainerBase.addChild 
(ContainerBase.java:739)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java: 
524)
	at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java: 
788)
	at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java: 
677)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java: 
473)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1102)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent 
(HostConfig.java:311)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent 
(LifecycleSupport.java:119)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 
1020)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 
1012)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java: 
442)
	at org.apache.catalina.core.StandardService.start 
(StandardService.java:450)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java: 
683)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
2007-01-14 03:10:33,687 WARN  
[org.coffeebreak.config.ErrorInitServlet] - Loaded: error.properties
INFO: Server startup in 15130 ms

As one can see there's an obvious pathing issue:

/Developer/JavaTools/tomcat/jakarta-tomcat-5.5.9/bin/WEB-INF/classes/ 
org/coffeebreak/config/attributes-config.xml

As one can see there's an obvious pathing issu

Where does the tomcat_home/bin/... come from? The "bin" directory is  
not supposed to be there!

Here's the specific target from my build script which places  
attributes-config.xml into tomcat_home/WEB-INF/classes/org/ 
coffeebreak/config:

<target name="static" depends="prepare">
	    <!-- Copy web files -->
	    <copy todir="${webapp.build.dir}/">
	        <fileset dir="web" />
	    </copy>
	    <!-- Copy webapp configuration files -->
	    <copy todir="${webapp.build.dir}/WEB-INF/">
	        <fileset dir="etc" />
	    </copy>
	    <!-- Copy library files -->
	    <copy todir="${webapp.build.dir}/WEB-INF/lib/">
	       <fileset dir="lib" />
	    </copy>
     	<!-- Copy properties files -->
     	<copy todir="${webapp.build.dir}/WEB-INF/classes/">
     		<fileset dir="props" />
     	</copy>
     	<!-- Copy config files -->
     	<copy todir="${webapp.build.dir}/WEB-INF/classes/org/ 
coffeebreak/config/">
     		<fileset dir="config" />
     	</copy>
     	<!-- Copy rules files -->
     	<copy todir="${webapp.build.dir}/WEB-INF/classes/org/ 
coffeebreak/helper/">
     		<fileset dir="rules" />
     	</copy>
</target>

Here's my deployment descriptor (web.xml) file:

<!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>

     <display-name>Coffee Break</display-name>
     <description>
         CoffeeBreak Application
     </description>

     <servlet>
       <servlet-name>CoffeeBreakServlet</servlet-name>
       <servlet-class>org.coffeebreak.CoffeeBreakServlet</servlet-class>
     </servlet>

     <servlet-mapping>
       <servlet-name>CoffeeBreakServlet</servlet-name>
       <url-pattern>/app</url-pattern>
     </servlet-mapping>

     <servlet>
        <servlet-name>log4j-init</servlet-name>
        <servlet-class>org.coffeebreak.logging.Log4jInitServlet</ 
servlet-class>
        <init-param>
            <param-name>log4j-init-file</param-name>
            <param-value>WEB-INF/classes/log4j.properties</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet>
        <servlet-name>xml-config</servlet-name>
        <servlet-class>org.coffeebreak.config.XmlConfigInitServlet</ 
servlet-class>
        <init-param>
            <param-name>xml-config-file</param-name>
            <param-value>WEB-INF/classes/org/coffeebreak/config/ 
attributes-config.xml</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>

     <servlet>
        <servlet-name>error-init</servlet-name>
        <servlet-class>org.coffeebreak.config.ErrorInitServlet</ 
servlet-class>
        <init-param>
            <param-name>error-init-file</param-name>
            <param-value>WEB-INF/classes/error.properties</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

</web-app>

Here's my init servlet for the XML file:

package org.coffeebreak.config;

import org.apache.log4j.Logger;
import org.coffeebreak.helper.AttributeBeanXmlConfigHelper;

import java.io.File;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

public class XmlConfigInitServlet extends HttpServlet {
     public void init() throws ServletException {
         String file = getInitParameter("xml-config-file");
         File xmlConfigFile = new File(file);
         if (!xmlConfigFile.exists()) {
             System.out.println("attributes-config.xml not found, "
                     + xmlConfigFile.getAbsolutePath());
         }

         try {
             // Configure Digester from XML ruleset
             AttributeBeanXmlConfigHelper.parse(xmlConfigFile);

             Logger.getLogger(this.getClass()).warn(
                     "Finished parsing the config file.");
         }
         catch (Exception ex) {
             ex.printStackTrace();
         }
     }
}

My helper file (which is showing that the rules file is not loading):

package org.coffeebreak.helper;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.digester.Digester;
import org.apache.commons.digester.xmlrules.DigesterLoader;
import org.apache.log4j.Logger;
import org.coffeebreak.model.AttributeBean;
import org.xml.sax.SAXException;

public class AttributeBeanXmlConfigHelper {

     private static List<AttributeBean> attributeConfigList = null;

     public static void parse(File xmlConfigFile) throws IOException,
             SAXException {
         URL rules = AttributeBeanXmlConfigHelper.class
                 .getResource("attributes-rules.xml");
         Logger.getLogger(AttributeBeanXmlConfigHelper.class).warn(
                 "rules: " + rules);
         Digester digester = null;
         try {
             digester = DigesterLoader.createDigester(rules);
         }
         catch (Throwable e) {
             e.printStackTrace();
             e.getCause().printStackTrace();
         }

         // Push empty List onto Digester's Stack
         attributeConfigList = new ArrayList<AttributeBean>();
         digester.push(attributeConfigList);

         // Parse the XML document
         InputStream input = new FileInputStream(xmlConfigFile);
         digester.parse(input);
     }

     public static List<AttributeBean> getConfig() {
         return attributeConfigList;
     }
}

What could I possibly be doing wrong?

Why is it stating this when I start Tomcat:

attributes-config.xml not found, /Developer/JavaTools/tomcat/jakarta- 
tomcat-5.5.9/bin/WEB-INF/classes/org/coffeebreak/config/attributes- 
config.xml

it should be without the bin directory:

/Developer/JavaTools/tomcat/jakarta-tomcat-5.5.9/WEB-INF/classes/org/ 
coffeebreak/config/attributes-config.xml

Why is the rules file coming out as null?

2007-01-14 03:10:33,074 WARN  
[org.coffeebreak.helper.AttributeBeanXmlConfigHelper] - rules: null

WIth thanks!

James Dekker







Re: Help loading XML config file via Init Servlet

Posted by David Smith <dn...@cornell.edu>.
I think you are really after this.class.getResourceAsStream(
"org/coffeebreak/config/attributes-config.xml" ) ;  which would use the
classloader to locate your xml file in WEB-INF/classes or your jar file
and return an InputStream to it.

--David

James Dekker wrote:

> Robert,
>
> The problem with the getRealPath() is that I have the undeployWars 
> set to false in server.xml
> and getRealPath() is just for raw File I / O, it can't be used to 
> read from a jar file...
>
> Thanks for the suggestion, nonetheless!
>
> Sincerely,
>
> James Dekker
>
> On Jan 15, 2007, at 4:54 AM, robert lazarski wrote:
>
>> On 1/14/07, James Dekker <ja...@gmail.com> wrote:
>>
>>> Hello there,
>>>
>>> I am using the Apache Commons Digester to load an XML config file via
>>> a servlet with init params...
>>>
>>> I keep getting this error when I start Tomcat 5.5.9 and have deployed
>>> the war file via my build script:
>>>
>>> INFO: Deploying web application archive coffeebreak.war
>>> 2007-01-14 03:10:33,050 WARN
>>> [org.coffeebreak.logging.Log4jInitServlet] - Loaded: log4j.properties
>>> file
>>> attributes-config.xml not found, /Developer/JavaTools/tomcat/jakarta-
>>> tomcat-5.5.9/bin/WEB-INF/classes/org/coffeebreak/config/attributes-
>>> config.xml
>>
>>
>> Try using getRealPath() . Here's some code a wrote a while back:
>>
>> /**
>> * Load log4j
>> *
>> * @web.servlet
>> *      display-name="log4j-init"
>> *      load-on-startup="1"
>> *      name="com.infoseg.mr.xtutil.Log4jInit"
>> *
>> * @web.servlet-init-param name="log4j-init-file"
>> *                         value="WEB-INF/properties/log4j.properties"
>> *
>> */
>>
>> public class Log4jInit extends HttpServlet
>> {
>>  public void init()
>>  {
>>    String prefix =  getServletContext().getRealPath("/");
>>    String file = getInitParameter("log4j-init-file");
>>    // if the log4j-init-file is not set, then no point in trying
>>    if(file != null)
>>    {
>>      PropertyConfigurator.configure(prefix+file);
>>    }
>>    else
>>    {
>>      throw new RuntimeException("Cannot load InitParameter from
>> web.xml: log4j-init-file");
>>    }
>>  }
>>
>>  public void doGet(HttpServletRequest req, HttpServletResponse
>> res) {}
>>
>> HTH,
>> Robert
>>
>> ---------------------------------------------------------------------
>> To start a new topic, e-mail: users@tomcat.apache.org
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Help loading XML config file via Init Servlet

Posted by James Dekker <ja...@gmail.com>.
Robert,

The problem with the getRealPath() is that I have the undeployWars  
set to false in server.xml
and getRealPath() is just for raw File I / O, it can't be used to  
read from a jar file...

Thanks for the suggestion, nonetheless!

Sincerely,

James Dekker

On Jan 15, 2007, at 4:54 AM, robert lazarski wrote:

> On 1/14/07, James Dekker <ja...@gmail.com> wrote:
>> Hello there,
>>
>> I am using the Apache Commons Digester to load an XML config file via
>> a servlet with init params...
>>
>> I keep getting this error when I start Tomcat 5.5.9 and have deployed
>> the war file via my build script:
>>
>> INFO: Deploying web application archive coffeebreak.war
>> 2007-01-14 03:10:33,050 WARN
>> [org.coffeebreak.logging.Log4jInitServlet] - Loaded: log4j.properties
>> file
>> attributes-config.xml not found, /Developer/JavaTools/tomcat/jakarta-
>> tomcat-5.5.9/bin/WEB-INF/classes/org/coffeebreak/config/attributes-
>> config.xml
>
> Try using getRealPath() . Here's some code a wrote a while back:
>
> /**
> * Load log4j
> *
> * @web.servlet
> *      display-name="log4j-init"
> *      load-on-startup="1"
> *      name="com.infoseg.mr.xtutil.Log4jInit"
> *
> * @web.servlet-init-param name="log4j-init-file"
> *                         value="WEB-INF/properties/log4j.properties"
> *
> */
>
> public class Log4jInit extends HttpServlet
> {
>  public void init()
>  {
>    String prefix =  getServletContext().getRealPath("/");
>    String file = getInitParameter("log4j-init-file");
>    // if the log4j-init-file is not set, then no point in trying
>    if(file != null)
>    {
>      PropertyConfigurator.configure(prefix+file);
>    }
>    else
>    {
>      throw new RuntimeException("Cannot load InitParameter from
> web.xml: log4j-init-file");
>    }
>  }
>
>  public void doGet(HttpServletRequest req, HttpServletResponse
> res) {}
>
> HTH,
> Robert
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Help loading XML config file via Init Servlet

Posted by robert lazarski <ro...@gmail.com>.
On 1/14/07, James Dekker <ja...@gmail.com> wrote:
> Hello there,
>
> I am using the Apache Commons Digester to load an XML config file via
> a servlet with init params...
>
> I keep getting this error when I start Tomcat 5.5.9 and have deployed
> the war file via my build script:
>
> INFO: Deploying web application archive coffeebreak.war
> 2007-01-14 03:10:33,050 WARN
> [org.coffeebreak.logging.Log4jInitServlet] - Loaded: log4j.properties
> file
> attributes-config.xml not found, /Developer/JavaTools/tomcat/jakarta-
> tomcat-5.5.9/bin/WEB-INF/classes/org/coffeebreak/config/attributes-
> config.xml

Try using getRealPath() . Here's some code a wrote a while back:

/**
 * Load log4j
 *
 * @web.servlet
 *      display-name="log4j-init"
 *      load-on-startup="1"
 *      name="com.infoseg.mr.xtutil.Log4jInit"
 *
 * @web.servlet-init-param name="log4j-init-file"
 *                         value="WEB-INF/properties/log4j.properties"
 *
 */

public class Log4jInit extends HttpServlet
{
  public void init()
  {
    String prefix =  getServletContext().getRealPath("/");
    String file = getInitParameter("log4j-init-file");
    // if the log4j-init-file is not set, then no point in trying
    if(file != null)
    {
      PropertyConfigurator.configure(prefix+file);
    }
    else
    {
      throw new RuntimeException("Cannot load InitParameter from
web.xml: log4j-init-file");
    }
  }

  public void doGet(HttpServletRequest req, HttpServletResponse
res) {}

HTH,
Robert

---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org