Hello Fillip

No that's impossible because the same war file is deployed on the two
instances.

2009/2/20 Filip Hanik - Dev Lists <devli...@hanik.com>

> It's a serialization error. One of the attributes in your session that was
> serialized on serverA, failed to deserialize on serverB
> Are you possible running different versions of the same class on the two
> servers?
>
> Filip
>
>
> Stephane DUCAS wrote:
>
>> Hello I've tryed vertical clustered tomcat installation (two instances)
>> but
>> I have an issue when configuraiong it with:
>>
>>  <ClusterListener
>> className="org.apache.catalina.ha.session.ClusterSessionListener"/>
>>
>> When I  comment out this line I have no problem but session is not
>> recovered
>> when one node crash
>>
>> When I put this line, loadbalancing don't work (only one node is really
>> hitted) I have this exception in log files of the unhitted node:
>>
>> java.lang.IllegalStateException: unread block data
>>        at
>>
>> java.io.ObjectInputStream$BlockDataInputStream.setBlockDataMode(ObjectInputStream.java:2377)
>>        at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1361)
>>        at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
>>        at
>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
>>        at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>>        at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
>>        at
>>
>> org.apache.catalina.ha.session.DeltaRequest$AttributeInfo.readExternal(DeltaRequest.java:361)
>>        at
>>
>> org.apache.catalina.ha.session.DeltaRequest.readExternal(DeltaRequest.java:255)
>>        at
>>
>> org.apache.catalina.ha.session.DeltaManager.deserializeDeltaRequest(DeltaManager.java:621)
>>        at
>>
>> org.apache.catalina.ha.session.DeltaManager.handleSESSION_DELTA(DeltaManager.java:1379)
>>        at
>>
>> org.apache.catalina.ha.session.DeltaManager.messageReceived(DeltaManager.java:1334)
>>        at
>>
>> org.apache.catalina.ha.session.DeltaManager.messageDataReceived(DeltaManager.java:1093)
>>        at
>>
>> org.apache.catalina.ha.session.ClusterSessionListener.messageReceived(ClusterSessionListener.java:87)
>>        at
>>
>> org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.java:899)
>>        at
>>
>> org.apache.catalina.ha.tcp.SimpleTcpCluster.messageReceived(SimpleTcpCluster.java:880)
>>        at
>>
>> org.apache.catalina.tribes.group.GroupChannel.messageReceived(GroupChannel.java:269)
>>        at
>>
>> org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:79)
>>        at
>>
>> org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.messageReceived(TcpFailureDetector.java:110)
>>        at
>>
>> org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:79)
>>        at
>>
>> org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:79)
>>        at
>>
>> org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor.messageReceived(ThroughputInterceptor.java:86)
>>        at
>>
>> org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived(ChannelInterceptorBase.java:79)
>>        at
>>
>> org.apache.catalina.tribes.group.ChannelCoordinator.messageReceived(ChannelCoordinator.java:241)
>>        at
>>
>> org.apache.catalina.tribes.transport.ReceiverBase.messageDataReceived(ReceiverBase.java:225)
>>        at
>>
>> org.apache.catalina.tribes.transport.nio.NioReplicationTask.drainChannel(NioReplicationTask.java:188)
>>        at
>>
>> org.apache.catalina.tribes.transport.nio.NioReplicationTask.run(NioReplicationTask.java:91)
>>        at
>>
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
>>        at
>>
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>>        at java.lang.Thread.run(Thread.java:619)
>>
>>
>> I've tryed with sun jdk's 1.5, 1.6 and open jdk (both 64bit and 32bit) but
>> I
>> have always the same..
>>
>> I running with mod_jk and sticky_session=true..
>>
>> Here are my conf files:
>>
>> Server.xml (node1 and node2 are the same except jvMRoute and some ports):
>>
>> <?xml version='1.0' encoding='utf-8'?>
>> <!--
>>  Licensed to the Apache Software Foundation (ASF) under one or more
>>  contributor license agreements.  See the NOTICE file distributed with
>>  this work for additional information regarding copyright ownership.
>>  The ASF licenses this file to You under the Apache License, Version 2.0
>>  (the "License"); you may not use this file except in compliance with
>>  the License.  You may obtain a copy of the License at
>>
>>      http://www.apache.org/licenses/LICENSE-2.0
>>
>>  Unless required by applicable law or agreed to in writing, software
>>  distributed under the License is distributed on an "AS IS" BASIS,
>>  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>  See the License for the specific language governing permissions and
>>  limitations under the License.
>> -->
>> <!-- Note:  A "Server" is not itself a "Container", so you may not
>>     define subcomponents such as "Valves" at this level.
>>     Documentation at /docs/config/server.html
>>  -->
>> <Server port="10005" shutdown="SHUTDOWN">
>>
>>  <!--APR library loader. Documentation at /docs/apr.html -->
>>  <Listener className="org.apache.catalina.core.AprLifecycleListener"
>> SSLEngine="on" />
>>  <!--Initialize Jasper prior to webapps are loaded. Documentation at
>> /docs/jasper-howto.html -->
>>  <Listener className="org.apache.catalina.core.JasperListener" />
>>  <!-- JMX Support for the Tomcat server. Documentation at
>> /docs/non-existent.html -->
>>  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
>> />
>>  <Listener
>> className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
>>
>>  <!-- Global JNDI resources
>>       Documentation at /docs/jndi-resources-howto.html
>>  -->
>>  <GlobalNamingResources>
>>    <!-- 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" Note:  A "Service" is not itself a "Container",
>>       so you may not define subcomponents such as "Valves" at this level.
>>       Documentation at /docs/config/service.html
>>   -->
>>  <Service name="Catalina">
>>
>>    <!--The connectors can use a shared executor, you can define one or
>> more
>> named thread pools-->
>>    <!--
>>    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
>>        maxThreads="150" minSpareThreads="4"/>
>>    -->
>>    <!-- A "Connector" represents an endpoint by which requests are
>> received
>>         and responses are returned. Documentation at :
>>         Java HTTP Connector: /docs/config/http.html (blocking &
>> non-blocking)
>>         Java AJP  Connector: /docs/config/ajp.html
>>         APR (HTTP/AJP) Connector: /docs/apr.html
>>         Define a non-SSL HTTP/1.1 Connector on port 8080
>>    -->
>>    <Connector port="10080" protocol="HTTP/1.1"
>>               connectionTimeout="20000"
>>               redirectPort="10443" />
>>    <!-- A "Connector" using the shared thread pool-->
>>    <!--
>>    <Connector executor="tomcatThreadPool"
>>               port="8080" protocol="HTTP/1.1"
>>               connectionTimeout="20000"
>>               redirectPort="8443" />
>>    -->
>>    <!-- Define a SSL HTTP/1.1 Connector on port 8443
>>         This connector uses the JSSE configuration, when using APR, the
>>         connector should be using the OpenSSL style configuration
>>         described in the APR documentation -->
>>    <!--
>>    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
>>               maxThreads="150" scheme="https" secure="true"
>>               clientAuth="false" sslProtocol="TLS" />
>>    -->
>>
>>    <!-- Define an AJP 1.3 Connector on port 8009 -->
>>    <Connector port="10009" protocol="AJP/1.3" redirectPort="10443" />
>>
>>
>>    <!-- 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).
>>         Documentation at /docs/config/engine.html -->
>>
>>    <!-- You should set jvmRoute to support load-balancing via AJP ie :
>>    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
>>    -->
>>    <Engine name="Catalina" defaultHost="localhost" jvmRoute="node2">
>>
>>      <!--For clustering, please take a look at documentation at:
>>          /docs/cluster-howto.html  (simple how to)
>>  /docs/config/cluster.html (reference documentation) -->
>> <!---->
>> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
>> channelSendOptions="6">
>>
>>          <Manager className="org.apache.catalina.ha.session.BackupManager"
>>                   expireSessionsOnShutdown="false"
>>                   notifyListenersOnReplication="true"
>>                   mapSendOptions="6"/>
>>
>>
>>
>>          <Manager className="org.apache.catalina.ha.session.DeltaManager"
>>                   expireSessionsOnShutdown="false"
>>
>>                  notifyListenersOnReplication="true" mapSendOptions="6"/>
>>          <Channel
>> className="org.apache.catalina.tribes.group.GroupChannel">
>>            <Membership
>> className="org.apache.catalina.tribes.membership.McastService"
>>                        address="228.0.0.4"
>>                        port="45564"
>>                        frequency="500"
>>                        dropTime="3000"/>
>>            <Receiver
>> className="org.apache.catalina.tribes.transport.nio.NioReceiver"
>>                      address="auto"
>>                      port="4002"
>>                      autoBind="100"
>>                      selectorTimeout="5000"
>>                      maxThreads="6"/>
>>
>>            <Sender
>> className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
>>              <Transport
>>
>> className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
>>            </Sender>
>>            <Interceptor
>>
>> className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
>>            <Interceptor
>>
>> className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
>>            <Interceptor
>>
>> className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
>>          </Channel>
>>
>>          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
>>
>>
>> filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
>>          <Valve
>> className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
>>
>>          <Deployer
>> className="org.apache.catalina.ha.deploy.FarmWarDeployer"
>>                    tempDir="/tmp/war-temp/"
>>                    deployDir="/tmp/war-deploy/"
>>                    watchDir="/tmp/war-listen/"
>>                    watchEnabled="false"/>
>>
>>          <ClusterListener
>>
>> className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
>> <!--          <ClusterListener
>> className="org.apache.catalina.ha.session.ClusterSessionListener"/> -->
>>
>>      </Cluster>
>>
>>      <!-- The request dumper valve dumps useful debugging information
>> about
>>           the request and response data received and sent by Tomcat.
>>           Documentation at: /docs/config/valve.html -->
>>      <!-- -->
>>      <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
>>
>>
>>      <!-- 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"/>
>>
>>      <!-- 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">
>>
>>
>>        <!-- SingleSignOn valve, share authentication between web
>> applications
>>             Documentation at: /docs/config/valve.html -->
>>        <!--
>>        <Valve className="org.apache.catalina.authenticator.SingleSignOn"
>> />
>>        -->
>>
>>        <!-- Access log processes all example.
>>             Documentation at: /docs/config/valve.html -->
>>        <!--
>>        <Valve className="org.apache.catalina.valves.AccessLogValve"
>> directory="logs"
>>               prefix="localhost_access_log." suffix=".txt"
>> pattern="common"
>> resolveHosts="false"/>
>>        -->
>>
>>      </Host>
>>    </Engine>
>>  </Service>
>> </Server>
>>
>>
>> AND
>>
>> worker.properties:
>>
>> #La liste des tomcat qui rentre dans notre load-balancer, plus l'alias sur
>> le load-balancer
>> worker.list=loadbalancer,node1,node2
>>
>> #La config du load-balencer
>> worker.loadbalancer.type=lb
>> worker.loadbalancer.balanced_workers=node1,node2
>> worker.loadbalancer.sticky_session=1
>>
>> #Le premier tomcat
>> worker.node1.type=ajp13
>> worker.node1.host=127.0.0.1
>> worker.node1.port=9009
>> worker.node1.lbfactor=10
>>
>> #Le second Tomcat, attention soit l'hôte soit le port doivent différés
>> worker.node2.type=ajp13
>> worker.node2.host=127.0.0.1
>> worker.node2.port=10009
>> worker.node2.lbfactor=10
>>
>>
>> I really need to set up this vertical cluster, THX in advance!
>>
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

Reply via email to