OK, I'm probably being dense here.
(There's only 1 context in each host, the ROOT context) If I take the Host/Context offline in one node and restart it, the logs on that node start showing the following: SEVERE: Context manager doesn't exist:host1 As the Context doesn't exist, which is the same message that appears briefly in the logs during a restart, until that particular Host is loaded (under normal circumstances). This much I understand, and provides no problems for me. With all Hosts available on each node of the cluster, I then update the Context on one Host, (by adding a new jar, say). The Context has reloadable="true", so it does just that. Once that context has updated, the other nodes start seeing: SEVERE: Context manager doesn't exist:host1host1 If I reload the context again, (without restarting the server), I see this: SEVERE: Context manager doesn't exist:host1host1host1 I could go on, but I think you can see where this is going... Peter Rossbach wrote: > Hmm, > > look at o.a.c.cluster.tcp.SimpleTcpCluster > > L 626ff > private String getManagerName(String name, Manager manager) { > String clusterName = name ; > if(getContainer() instanceof Engine) { > Container context = manager.getContainer() ; > if(context != null && context instanceof Context) { > Container host = ((Context)context).getParent(); > if(host != null && host instanceof Host) > clusterName = host.getName() + name ; > } > } > return clusterName; > } > > > You see we append "hostname + context" as cluster engine container. > > Peter > > > > Am 22.06.2006 um 10:32 schrieb Pid: > >> >> >> Filip Hanik - Dev Lists wrote: >>> if the cluster is put in the engine element, the context names are >>> prefixed with the engine name, since you can have multiple contexts with >>> the same name in different host >>> when reloading a context, you'll get these errors cause the context is >>> not available during the reload >>> this will be fixed with the new Apache Tribes module >>> Filip >> >> I understand that the context is not available during reload. After >> reload has completed, the error persists. >> >> My Engine name is Catalina, it looks like the cluster isn't sending the >> engine name, but the context name, appended to itself. >> >> You're implying that it should send Catalina+website1, but it's sending >> website1+website1 instead. >> >> After startup: >> Node1 sees Node2 send "website2" >> Node2 sees Node1 send "website1" >> >> After context on Node1 is finished reloading: >> Node1 sees Node2 send "website2" >> Node2 sees Node1 send "website1website1" >> >> I think that the context name is being appended to itself. >> >> >>> Pid wrote: >>>> I'm seeing an issue on 5.5.17 with a 2 node cluster config. >>>> When a context is reloaded, it sends the context node name incorrectly >>>> to the cluster. >>>> E.g. context is called "website1" >>>> >>>> SEVERE: Context manager doesn't exist:website1website1 >>>> >>>> The config I'm using is exactly the same as the default from >>>> server.xml, >>>> except the cluster is defined in Engine, rather than each Host. >>>> >>>> >>>> >>>> >>>> Filip Hanik - Dev Lists wrote: >>>> >>>>> also, use Tomcat 5.5.17 >>>>> >>>>> Sean O'Reilly wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> I am trying to get in-memory session replication working and am >>>>>> testing >>>>>> running 3 seperate tomcat instances on the same server. >>>>>> >>>>>> I am using tomcat-5.5.15 and apache-2.0.54 with jk2. >>>>>> >>>>>> Whenever i run my test app although it should be doing round-robin >>>>>> load >>>>>> balancing it doesn't switch to another instance of tomcat until the >>>>>> eighth request and does not appear to have sent the session >>>>>> information >>>>>> across as the session ID changes. >>>>>> >>>>>> Here are my server.xml and workers2.properties files >>>>>> >>>>>> server.xml >>>>>> >>>>>> <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.GlobalResourcesLifecycleListener" >>>>>> >>>>>> /> >>>>>> <Listener >>>>>> className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> <!-- 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="8080" maxHttpHeaderSize="8192" >>>>>> maxThreads="150" 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="Tomcat5A"> <!-- Define the top level >>>>>> container in our container >>>>>> hierarchy >>>>>> <Engine name="Catalina" defaultHost="localhost"> --> >>>>>> >>>>>> <!-- 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://localhost/authority" >>>>>> connectionName="test" connectionPassword="test" >>>>>> 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 >>>>>> mcastBindAddr = 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="false" >>>>>> 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="6"/> >>>>>> >>>>>> <Sender >>>>>> >>>>>> className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" >>>>>> replicationMode="pooled" >>>>>> ackTimeout="15000"/> >>>>>> >>>>>> <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"/> >>>>>> --> >>>>>> <!-- 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. >>>>>> >>>>>> This valve use NIO direct Byte Buffer to asynchornously >>>>>> store the >>>>>> log. >>>>>> --> >>>>>> <!-- >>>>>> <Valve >>>>>> className="org.apache.catalina.valves.ByteBufferAccessLogValve" >>>>>> directory="logs" prefix="localhost_access_log." >>>>>> suffix=".txt" >>>>>> pattern="common" resolveHosts="false"/> >>>>>> --> >>>>>> >>>>>> </Host> >>>>>> >>>>>> </Engine> >>>>>> >>>>>> </Service> >>>>>> >>>>>> </Server> >>>>>> >>>>>> >>>>>> workers2.properties >>>>>> >>>>>> [logger.apache2] >>>>>> file="/etc/httpd/conf/logs/error.log" >>>>>> level=INFO >>>>>> debug=1 >>>>>> >>>>>> # Config settings >>>>>> [config] >>>>>> file=/etc/httpd/conf/workers2.properties >>>>>> debug=0 >>>>>> >>>>>> # Shared memory file settings >>>>>> [shm] >>>>>> file=/etc/httpd/conf/jk2.shm >>>>>> size=100000 >>>>>> >>>>>> # Communcation channel settings for "Tomcat5A" >>>>>> [channel.socket:localhost:8009] >>>>>> host=localhost >>>>>> port=8009 >>>>>> tomcatId=Tomcat5A >>>>>> group=balanced >>>>>> lb_factor=1 >>>>>> route=Tomcat5A >>>>>> >>>>>> >>>>>> # Declare a Tomcat5A worker >>>>>> [ajp13:localhost:8009] >>>>>> channel=channel.socket:Tomcat5A >>>>>> >>>>>> >>>>>> # Communcation channel settings for "Tomcat5B" >>>>>> [channel.socket:localhost:8010] >>>>>> host=localhost >>>>>> port=8010 >>>>>> tomcatId=Tomcat5B >>>>>> group=balanced >>>>>> lb_factor=1 >>>>>> route=Tomcat5B >>>>>> >>>>>> >>>>>> # Declare a Tomcat5B worker >>>>>> [ajp13:localhost:8010] >>>>>> channel=channel.socket:Tomcat5B >>>>>> >>>>>> >>>>>> # Communcation channel settings for "Tomcat5C" >>>>>> [channel.socket:localhost:8011] >>>>>> host=localhost >>>>>> port=8011 >>>>>> tomcatId=Tomcat5C >>>>>> group=balanced >>>>>> lb_factor=1 >>>>>> route=Tomcat5C >>>>>> >>>>>> >>>>>> # Declare a Tomcat5C worker >>>>>> [ajp13:localhost:8011] >>>>>> channel=channel.socket:Tomcat5C >>>>>> >>>>>> # Load balanced Worker >>>>>> [lb:balanced] >>>>>> worker=ajp13:localhost:8009 >>>>>> worker=ajp13:localhost:8010 >>>>>> worker=ajp13:localhost:8011 >>>>>> timeout=90 >>>>>> attempts=3 >>>>>> recovery=30 >>>>>> stickySession=0 >>>>>> noWorkerMsg=Server Busy please retry later. >>>>>> noWorkerCodeMsg=503 >>>>>> >>>>>> # URI mappings for the tomcat worker >>>>>> # Map the "jsp-examples" web application context to the web server >>>>>> URI >>>>>> space >>>>>> [uri:/jsp-examples/*] >>>>>> info= Mapping for jsp-examples context for tomcat >>>>>> context=/jsp-examples >>>>>> group=balanced >>>>>> >>>>>> [shm] >>>>>> file=/etc/httpd/conf/jk2.shm >>>>>> size=1000000 >>>>>> >>>>>> [uri:/servlets-examples/*] >>>>>> context=/servlets-examples >>>>>> group=balanced >>>>>> >>>>>> # Define a status worker >>>>>> [status:] >>>>>> >>>>>> # Status URI mapping >>>>>> [uri:/jkstatus/*] >>>>>> group=status >>>>>> >>>>>> >>>>>> obviously the server.xml files on the other 2 instances of tomcat are >>>>>> the same except the ports and jvmRoute have been changed. >>>>>> >>>>>> >>>>>> can anyone see where i am going wrong ? >>>>>> >>>>>> Thanks >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>> >>>> --------------------------------------------------------------------- >>>> 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] > > > --------------------------------------------------------------------- To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]