Hi Peter, I was having the memory problem when cluster manager trying to multicast the request when tomcat startup. As a trial I commented multicast element of cluster configuration in server.xml and restarted both tomcats
This is the multicast element which I commented. ============================== <!-- <Membership className="org.apache.catalina.cluster.mcast.McastService" mcastAddr="228.0.0.4" mcastPort="45564" mcastFrequency="500" mcastDropTime="3000"/> --> ============================== Then tomcat started without an outofmemoryerror. Also replication members are added to each other. I ran both of servers with my applicaiton for some time. It is working fine. Session replication is happening as usual. Can you let me know can I proceed with this setup or is there any effect of my commenting on session replication ? Can you kindly let me know? Thanks and best regards, Dilan -----Original Message----- From: Peter Rossbach [mailto:[EMAIL PROTECTED] Sent: Sunday, June 18, 2006 9:50 AM To: Tomcat Users List Subject: Re: tomcat5.5.17 cluster(using jdk1.5) error - OutOfMemoryError in starting up on AS4 Use more JVM Options to analyse the mem usage Work with more faster mem allocation -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=8 -Xverbosegc Or better use a Memory Profiler... But the membership not allocate much memory, very strange effect :-( Peter Am 18.06.2006 um 08:01 schrieb Dilan Kelanibandara: > Hi Peter, > I am using default JVM parameters coming with tomcat5.5.17. In the > tomcat > server.xml file it says tcpThreadCount is normally equal to no.of > nodes (ie > 2 in this case).That is why I changed that to 2. > > I tried increasing JVM parameters for heap size in tomcat > Min=1024m > Max=1024m > also.I tried with both 512m also. But in both the occasion it is > the same > result. > Thank you for your kind attention. > I want further clarifications. > Best regards, > Dilan > -----Original Message----- > From: Peter Rossbach [mailto:[EMAIL PROTECTED] > Sent: Sunday, June 18, 2006 7:37 AM > To: Tomcat Users List > Subject: Re: tomcat5.5.17 cluster(using jdk1.5) error - > OutOfMemoryError in > starting up on AS4 > > Hi, > > Which JVM memory parameter you use? > At pooled mode use more receiver worker set tcpThreadCount="6"! > You really need deployer? Deployer generate at every startup a large > cluster message. > > Regards > Peter > > > Am 18.06.2006 um 06:22 schrieb Dilan Kelanibandara: > >> >> >> Hello , >> >> >> >> I am getting OutOfMemoryError continuously when starting up two >> cluster >> nodes of tomcat5.5.17 (jdk1.5 on Advanced server 4). Any way it was >> working >> fine for 3 weeks time. This error occurs previously only one time >> and when >> restarted the tomcat, it worked. >> >> >> >> >> >> Following is a part of catalina.out relevent to that error for >> node 1. >> >> ============ ======================================================== >> >> >> >> INFO: Start ClusterSender at cluster >> Catalina:type=Cluster,host=localhost >> >> with name Catalina:type=ClusterSender,host=localhost >> >> Jun 17, 2006 8:44:15 PM >> org.apache.catalina.cluster.mcast.McastService start >> >> INFO: Sleeping for 2000 milliseconds to establish cluster membership >> Exception in thread "Cluster-MembershipReceiver" >> java.lang.OutOfMemoryError: >> >> >> Java heap space >> >> Jun 17, 2006 8:44:17 PM >> org.apache.catalina.cluster.mcast.McastService >> >> registerMBean >> >> INFO: membership mbean registered >> >> (Catalina:type=ClusterMembership,host=localhost) >> >> Jun 17, 2006 8:44:17 PM >> org.apache.catalina.cluster.deploy.FarmWarDeployer >> >> start >> >> INFO: Cluster FarmWarDeployer started. >> >> Jun 17, 2006 8:44:19 PM >> org.apache.catalina.cluster.session.DeltaManager >> >> start >> >> INFO: Register manager /StockTradingServer to cluster element Host >> with name >> localhost Jun 17, 2006 8:44:19 PM >> org.apache.catalina.cluster.session.DeltaManager >> >> start >> >> INFO: Starting clustering manager at /StockTradingServer Jun 17, 2006 >> 8:44:19 PM org.apache.catalina.cluster.session.DeltaManager >> >> getAllClusterSessions >> >> INFO: Manager [/StockTradingServer]: skipping state transfer. No >> members >> active in cluster group. >> >> >> >> ===================================================================== >> = >> ====== >> ===== >> >> node2 startup log is as follows >> >> ===================================================================== >> = >> ====== >> ===== >> >> INFO: Cluster is about to start >> >> Jun 17, 2006 8:53:00 PM >> >> org.apache.catalina.cluster.tcp.ReplicationTransmitter start >> >> INFO: Start ClusterSender at cluster >> Catalina:type=Cluster,host=localhost >> >> with name Catalina:type=ClusterSender,host=localhost >> >> Jun 17, 2006 8:53:00 PM >> org.apache.catalina.cluster.mcast.McastService start >> >> INFO: Sleeping for 2000 milliseconds to establish cluster membership >> Exception in thread "Cluster-MembershipReceiver" >> java.lang.OutOfMemoryError: >> >> >> Java heap space >> >> Jun 17, 2006 8:53:02 PM >> org.apache.catalina.cluster.mcast.McastService >> >> registerMBean >> >> INFO: membership mbean registered >> >> (Catalina:type=ClusterMembership,host=localhost) >> >> Jun 17, 2006 8:53:02 PM >> org.apache.catalina.cluster.deploy.FarmWarDeployer >> >> start >> >> INFO: Cluster FarmWarDeployer started. >> >> Jun 17, 2006 8:53:04 PM >> org.apache.catalina.cluster.session.DeltaManager >> >> start >> >> INFO: Register manager /StockTradingServer to cluster element Host >> with name >> localhost Jun 17, 2006 8:53:04 PM >> org.apache.catalina.cluster.session.DeltaManager >> >> start >> >> >> >> ===================================================================== >> = >> ====== >> = >> >> Any way my clustor was working fine for 3 weeks time and started to >> give >> this error in startup of both the nodes. >> >> >> >> I have an IBMHTTPServer with jk connector for load balancing and >> that load >> is comming my tomcat cluster. >> >> >> >> following is the server.xml file for both the servers. >> >> >> >> ===================================================================== >> = >> ====== >> = >> >> >> >> <!-- Example Server Configuration File --> >> >> <!-- Note that component elements are nested corresponding to their >> >> parent-child relationships with each other --> >> >> >> >> <!-- A "Server" is a singleton element that represents the entire >> JVM, >> >> which may contain one or more "Service" instances. The Server >> >> listens for a shutdown command on the indicated port. >> >> >> >> Note: A "Server" is not itself a "Container", so you may not >> >> define subcomponents such as "Valves" or "Loggers" at this level. >> >> --> >> >> >> >> <Server port="8005" shutdown="SHUTDOWN"> >> >> >> >> <!-- Comment these entries out to disable JMX MBeans support used >> for the >> >> administration web application --> <Listener >> className="org.apache.catalina.core.AprLifecycleListener" /> >> <Listener >> className="org.apache.catalina.mbeans.ServerLifecycleListener" /> >> <Listener >> className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListene >> r >> " /> >> <Listener >> className="org.apache.catalina.storeconfig.StoreConfigLifecycleListen >> e >> r"/> >> >> >> >> <!-- Global JNDI resources --> >> >> <GlobalNamingResources> >> >> >> >> <!-- Test entry for demonstration purposes --> >> >> <Environment name="simpleValue" type="java.lang.Integer" >> value="30"/> >> >> >> >> <!-- Editable user database that can also be used by >> >> UserDatabaseRealm to authenticate users --> >> >> <Resource name="UserDatabase" auth="Container" >> >> type="org.apache.catalina.UserDatabase" >> >> description="User database that can be updated and saved" >> >> >> factory="org.apache.catalina.users.MemoryUserDatabaseFactory" >> >> pathname="conf/tomcat-users.xml" /> >> >> >> >> </GlobalNamingResources> >> >> >> >> <!-- A "Service" is a collection of one or more "Connectors" that >> share >> >> a single "Container" (and therefore the web applications >> visible >> >> within that Container). Normally, that Container is an >> "Engine", >> >> but this is not required. >> >> >> >> Note: A "Service" is not itself a "Container", so you may not >> >> define subcomponents such as "Valves" or "Loggers" at this >> level. >> >> --> >> >> >> >> <!-- Define the Tomcat Stand-Alone Service --> <Service >> name="Catalina"> >> >> >> >> <!-- A "Connector" represents an endpoint by which requests are >> received >> >> and responses are returned. Each Connector passes requests >> on to >> the >> >> associated "Container" (normally an Engine) for processing. >> >> >> >> By default, a non-SSL HTTP/1.1 Connector is established on >> port >> 8080. >> >> You can also enable an SSL HTTP/1.1 Connector on port 8443 by >> >> following the instructions below and uncommenting the second >> Connector >> >> entry. SSL support requires the following steps (see the >> SSL Config >> HOWTO in the Tomcat 5 documentation bundle for more detailed >> >> instructions): >> >> * If your JDK version 1.3 or prior, download and install >> JSSE 1.0.2 >> or >> >> later, and put the JAR files into "$JAVA_HOME/jre/lib/ext". >> >> * Execute: >> >> %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA >> >> (Windows) >> >> $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg >> RSA (Unix) >> with a password value of "changeit" for both the certificate and >> >> the keystore itself. >> >> >> >> By default, DNS lookups are enabled when a web application >> calls >> >> request.getRemoteHost(). This can have an adverse impact on >> >> performance, so you can disable it by setting the >> >> "enableLookups" attribute to "false". When DNS lookups are >> disabled, >> >> request.getRemoteHost() will return the String version of the >> >> IP address of the remote client. >> >> --> >> >> >> >> <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> >> >> <Connector port="8088" maxHttpHeaderSize="8192" >> >> maxThreads="300" minSpareThreads="25" >> maxSpareThreads="75" >> >> enableLookups="false" redirectPort="8443" >> acceptCount="100" >> >> connectionTimeout="20000" >> disableUploadTimeout="true" /> >> >> <!-- Note : To disable connection timeouts, set >> connectionTimeout value >> >> to 0 --> >> >> >> >> <!-- Note : To use gzip compression you could set the >> following >> properties : >> >> >> >> compression="on" >> >> compressionMinSize="2048" >> >> noCompressionUserAgents="gozilla, traviata" >> >> compressableMimeType="text/html,text/xml" >> >> --> >> >> >> >> <!-- Define a SSL HTTP/1.1 Connector on port 8443 --> >> >> <!-- >> >> <Connector port="8443" maxHttpHeaderSize="8192" >> >> maxThreads="150" minSpareThreads="25" >> maxSpareThreads="75" >> >> enableLookups="false" disableUploadTimeout="true" >> >> acceptCount="100" scheme="https" secure="true" >> >> clientAuth="false" sslProtocol="TLS" /> >> >> --> >> >> >> >> <!-- Define an AJP 1.3 Connector on port 8009 --> >> >> <Connector port="8009" >> >> enableLookups="false" redirectPort="8443" >> protocol="AJP/1.3" >> >> /> >> >> >> >> <!-- Define a Proxied HTTP/1.1 Connector on port 8082 --> >> >> <!-- See proxy documentation for more information about using >> this. --> >> >> <!-- >> >> <Connector port="8082" >> >> maxThreads="150" minSpareThreads="25" >> maxSpareThreads="75" >> >> enableLookups="false" acceptCount="100" >> >> connectionTimeout="20000" >> >> proxyPort="80" disableUploadTimeout="true" /> >> >> --> >> >> >> >> <!-- An Engine represents the entry point (within Catalina) that >> processes >> >> every request. The Engine implementation for Tomcat stand >> alone >> >> analyzes the HTTP headers included with the request, and >> passes them >> on to the appropriate Host (virtual host). --> >> >> >> >> <!-- You should set jvmRoute to support load-balancing via AJP >> ie : >> >> <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1"> >> >> --> >> >> >> >> <!-- Define the top level container in our container hierarchy --> >> >> <Engine name="Catalina" defaultHost="localhost" jvmRoute="node01"> >> >> <!-- <Engine name="Catalina" jvmRoute="$JAVA_HOME" > --> >> >> >> >> <!-- The request dumper valve dumps useful debugging >> information about >> >> the request headers and cookies that were received, and the >> response >> >> headers and cookies that were sent, for all requests >> received by >> >> this instance of Tomcat. If you care only about requests >> to a >> >> particular virtual host, or a particular application, >> nest this >> >> element inside the corresponding <Host> or <Context> entry >> instead. >> >> >> >> For a similar mechanism that is portable to all Servlet 2.4 >> >> containers, check out the "RequestDumperFilter" Filter in >> the >> >> example application (the source for this filter may be >> found in >> >> "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters"). >> >> >> >> Request dumping is disabled by default. Uncomment the >> following >> >> element to enable it. --> >> >> <!-- >> >> <Valve >> className="org.apache.catalina.valves.RequestDumperValve"/> >> >> --> >> >> >> >> <!-- Because this Realm is here, an instance will be shared >> globally >> --> >> >> >> >> <!-- This Realm uses the UserDatabase configured in the global >> JNDI >> >> resources under the key "UserDatabase". Any edits >> >> that are performed against this UserDatabase are >> immediately >> >> available for use by the Realm. --> >> >> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" >> >> resourceName="UserDatabase"/> >> >> >> >> <!-- Comment out the old realm but leave here for now in case we >> >> need to go back quickly --> >> >> <!-- >> >> <Realm className="org.apache.catalina.realm.MemoryRealm" /> >> >> --> >> >> >> >> <!-- Replace the above Realm with one of the following to get >> a Realm >> >> stored in a database and accessed via JDBC --> >> >> >> >> >> >> <Realm className="org.apache.catalina.realm.JDBCRealm" >> >> driverName="org.gjt.mm.mysql.Driver" >> >> connectionURL="jdbc:mysql://172.16.1.55:3306/kutila" >> >> connectionName="kutila" connectionPassword="kutila" >> >> userTable="users" userNameCol="user_name" >> >> userCredCol="user_pass" >> >> userRoleTable="user_roles" roleNameCol="role_name" /> >> >> >> >> >> >> <!-- >> >> <Realm className="org.apache.catalina.realm.JDBCRealm" >> >> driverName="oracle.jdbc.driver.OracleDriver" >> >> connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL" >> >> connectionName="scott" connectionPassword="tiger" >> >> userTable="users" userNameCol="user_name" >> >> userCredCol="user_pass" >> >> userRoleTable="user_roles" roleNameCol="role_name" /> >> >> --> >> >> >> >> <!-- >> >> <Realm className="org.apache.catalina.realm.JDBCRealm" >> >> driverName="sun.jdbc.odbc.JdbcOdbcDriver" >> >> connectionURL="jdbc:odbc:CATALINA" >> >> userTable="users" userNameCol="user_name" >> >> userCredCol="user_pass" >> >> userRoleTable="user_roles" roleNameCol="role_name" /> >> >> --> >> >> >> >> <!-- Define the default virtual host >> >> Note: XML Schema validation will not work with Xerces 2.2. >> >> --> >> >> <Host name="localhost" appBase="webapps" >> >> unpackWARs="true" autoDeploy="true" >> >> xmlValidation="false" xmlNamespaceAware="false"> >> >> >> >> <!-- Defines a cluster for this node, >> >> By defining this element, means that every manager >> will be >> changed. >> >> So when running a cluster, only make sure that you have >> webapps >> in there >> >> that need to be clustered and remove the other ones. >> >> A cluster has the following parameters: >> >> >> >> className = the fully qualified name of the cluster class >> >> >> >> clusterName = a descriptive name for your cluster, can be >> anything >> >> >> >> mcastAddr = the multicast address, has to be the same >> for all >> the nodes >> >> >> >> mcastPort = the multicast port, has to be the same for >> all the >> nodes >> >> >> >> mcastBindAddress = bind the multicast socket to a >> specific >> address >> >> >> >> mcastTTL = the multicast TTL if you want to limit your >> broadcast >> >> mcastSoTimeout = the multicast readtimeout >> >> >> >> mcastFrequency = the number of milliseconds in between >> sending a >> "I'm alive" heartbeat >> >> >> >> mcastDropTime = the number a milliseconds before a >> node is >> considered "dead" if no heartbeat is received >> >> >> >> tcpThreadCount = the number of threads to handle incoming >> replication requests, optimal would be the same amount of threads >> as nodes >> >> >> >> tcpListenAddress = the listen address (bind address) >> for TCP >> cluster request on this host, >> >> in case of multiple ethernet cards. >> >> auto means that address becomes >> >> InetAddress.getLocalHost >> ().getHostAddress() >> >> >> >> tcpListenPort = the tcp listen port >> >> >> >> tcpSelectorTimeout = the timeout (ms) for the >> Selector.select() >> method in case the OS >> >> has a wakup bug in java.nio. Set >> to 0 for >> no timeout >> >> >> >> printToScreen = true means that managers will also >> print to >> std.out >> >> >> >> expireSessionsOnShutdown = true means that >> >> >> >> useDirtyFlag = true means that we only replicate a >> session after >> setAttribute,removeAttribute has been called. >> >> false means to replicate the session >> after each >> request. >> >> false means that replication would work >> for the >> following piece of code: (only for SimpleTcpReplicationManager) >> >> <% >> >> HashMap map = >> (HashMap)session.getAttribute("map"); >> >> map.put("key","value"); >> >> %> >> >> replicationMode = can be either 'pooled', >> 'synchronous' or >> 'asynchronous'. >> >> * Pooled means that the replication >> happens >> using several sockets in a synchronous way. Ie, the data gets >> replicated, >> then the request return. This is the same as the 'synchronous' >> setting >> except it uses a pool of sockets, hence it is multithreaded. This >> is the >> fastest and safest configuration. To use this, also increase the nr >> of tcp >> threads that you have dealing with replication. >> >> * Synchronous means that the thread >> that >> executes the request, is also the >> >> thread the replicates the data to the >> other >> nodes, and will not return until all >> >> nodes have received the information. >> >> * Asynchronous means that there is a >> specific >> 'sender' thread for each cluster node, >> >> so the request thread will queue the >> replication request into a "smart" queue, >> >> and then return to the client. >> >> The "smart" queue is a queue where >> when a >> session is added to the queue, and the same session >> >> already exists in the queue from a >> previous >> request, that session will be replaced >> >> in the queue instead of replicating two >> requests. This almost never happens, unless there is a >> >> large network delay. >> >> --> >> >> <!-- >> >> When configuring for clustering, you also add in a valve >> to catch >> all the requests >> >> coming in, at the end of the request, the session may or >> may not >> be replicated. >> >> A session is replicated if and only if all the >> conditions are >> >> met: >> >> 1. useDirtyFlag is true or setAttribute or >> removeAttribute has >> been called AND >> >> 2. a session exists (has been created) >> >> 3. the request is not trapped by the "filter" attribute >> >> >> >> The filter attribute is to filter out requests that >> could not >> modify the session, >> >> hence we don't replicate the session after the end of this >> request. >> >> The filter is negative, ie, anything you put in the >> filter, you >> mean to filter out, >> >> ie, no replication will be done on requests that match >> one of the >> filters. >> >> The filter attribute is delimited by ;, so you can't >> escape out ; >> even if you wanted to. >> >> >> >> filter=".*\.gif;.*\.js;" means that we will not >> replicate the >> session after requests with the URI >> >> ending with .gif and .js are intercepted. >> >> >> >> The deployer element can be used to deploy apps cluster >> wide. >> >> Currently the deployment only deploys/undeploys to working >> members in the cluster >> >> so no WARs are copied upons startup of a broken node. >> >> The deployer watches a directory (watchDir) for WAR >> files when >> watchEnabled="true" >> >> When a new war file is added the war gets deployed to >> the local >> instance, >> >> and then deployed to the other instances in the cluster. >> >> When a war file is deleted from the watchDir the war is >> undeployed locally >> >> and cluster wide >> >> --> >> >> >> >> >> >> <Cluster >> className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" >> >> >> managerClassName="org.apache.catalina.cluster.session.DeltaManager" >> >> expireSessionsOnShutdown="true" >> >> useDirtyFlag="true" >> >> notifyListenersOnReplication="true"> >> >> >> >> <Membership >> >> >> className="org.apache.catalina.cluster.mcast.McastService" >> >> mcastAddr="228.0.0.4" >> >> mcastPort="45564" >> >> mcastFrequency="500" >> >> mcastDropTime="3000"/> >> >> >> >> <Receiver >> >> >> >> className="org.apache.catalina.cluster.tcp.ReplicationListener" >> >> tcpListenAddress="auto" >> >> tcpListenPort="4001" >> >> tcpSelectorTimeout="100" >> >> tcpThreadCount="2"/> >> >> >> >> <Sender >> >> >> >> className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" >> >> replicationMode="pooled" >> >> ackTimeout="15000" >> >> waitForAck="true"/> >> >> >> >> <Valve >> >> className="org.apache.catalina.cluster.tcp.ReplicationValve" >> >> >> >> filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.* >> \.txt;"/> >> >> >> >> <Deployer >> >> className="org.apache.catalina.cluster.deploy.FarmWarDeployer" >> >> tempDir="/tmp/war-temp/" >> >> deployDir="/tmp/war-deploy/" >> >> watchDir="/tmp/war-listen/" >> >> watchEnabled="false"/> >> >> >> >> <ClusterListener >> >> className="org.apache.catalina.cluster.session.ClusterSessionListener >> " >> /> >> >> </Cluster> >> >> >> >> >> >> >> >> >> >> <!-- Normally, users must authenticate themselves to each >> web app >> >> individually. Uncomment the following entry if you >> would like >> >> a user to be authenticated the first time they >> encounter a >> >> resource protected by a security constraint, and then >> have that >> >> user identity maintained across *all* web applications >> contained >> in this virtual host. --> >> >> <!-- >> >> <Valve >> className="org.apache.catalina.authenticator.SingleSignOn" /> >> >> --> >> >> >> >> <!-- Access log processes all requests for this virtual >> host. By >> >> default, log files are created in the "logs" directory >> relative >> to >> >> $CATALINA_HOME. If you wish, you can specify a different >> >> directory with the "directory" attribute. Specify >> either a >> relative >> >> (to $CATALINA_HOME) or absolute path to the desired >> directory. >> >> --> >> >> <!-- >> >> <Valve className="org.apache.catalina.valves.AccessLogValve" >> >> directory="logs" prefix="localhost_access_log." >> >> suffix=".txt" >> >> pattern="common" resolveHosts="false"/> >> >> --> >> >> >> >> <!-- Access log processes all requests for this virtual >> host. By >> >> default, log files are created in the "logs" directory >> relative >> to >> >> $CATALINA_HOME. If you wish, you can specify a different >> >> directory with the "directory" attribute. Specify >> either a >> relative >> >> (to $CATALINA_HOME) or absolute path to the desired >> directory. >> >> This access log implementation is optimized for maximum >> performance, >> >> but is hardcoded to support only the "common" and >> "combined" >> >> patterns. >> >> --> >> >> <!-- >> >> <Valve >> >> className="org.apache.catalina.valves.FastCommonAccessLogValve" >> >> directory="logs" prefix="localhost_access_log." >> >> suffix=".txt" >> >> pattern="common" resolveHosts="false"/> >> >> --> >> >> >> >> </Host> >> >> >> >> </Engine> >> >> >> >> </Service> >> >> >> >> </Server> >> >> >> >> =========================================================== >> >> >> >> I appriceate your prompt help on this since this is a very critical >> application live for the moment. Always send me an email for any >> clarifications. >> >> >> >> Thanks and best regards, >> >> Dilan >> >> >> >> >> > > > --------------------------------------------------------------------- > To start a new topic, e-mail: users@tomcat.apache.org > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > --------------------------------------------------------------------- > To start a new topic, e-mail: users@tomcat.apache.org > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]