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: [email protected]
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To start a new topic, e-mail: [email protected]
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: [email protected]
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
---------------------------------------------------------------------
To start a new topic, e-mail: [email protected]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]