Dear users,
I am trying to setup tomcat clustering/session replication between two tomcats of version 6.0.18. The following is the cluster snippet inserted into server.xml of both servers: <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.BackupManager" 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="5000" selectorTimeout="100" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender " timeout="60000"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetec tor"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch 15Interceptor"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInter ceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt; "/> <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.ClusterSessionListener"/> </Cluster> I am having the following errors on both of my tomcats: May 4, 2010 5:51:46 AM org.apache.catalina.connector.CoyoteAdapter service SEVERE: An exception or error occurred in the container during the request processing java.lang.NullPointerException at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java :348) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2 86) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java: 697) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket. java:889) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool .java:690) at java.lang.Thread.run(Thread.java:619) WARNING: Member send is failing for:tcp://{-84, 16, -68, 46}:5000 ; Setting to suspect and retrying. May 4, 2010 5:54:13 AM org.apache.catalina.tribes.tipis.LazyReplicatedMap publishEntryInfo SEVERE: Unable to replicate backup key:B90703FBD00D77B21937383FBE71CBF1.tomcatA to backup:org.apache.catalina.tribes.membership.MemberImpl[tcp://{-84, 16, -68, 46}:5000,{-84, 16, -68, 46},5000, alive=4660,id={-63 85 -65 15 -86 -78 66 26 -74 -118 51 -13 -50 97 102 -103 }, payload={}, command={}, domain={}, ]. Reason:Send failed, attempt:2 max:1; Faulty memb ers:tcp://{-84, 16, -68, 46}:5000; org.apache.catalina.tribes.ChannelException: Send failed, attempt:2 max:1; Faulty members:tcp://{-84, 16, -68, 46}:5000; at org.apache.catalina.tribes.transport.nio.ParallelNioSender.doLoop(Parall elNioSender.java:172) at org.apache.catalina.tribes.transport.nio.ParallelNioSender.sendMessage(P arallelNioSender.java:78) at org.apache.catalina.tribes.transport.nio.PooledParallelSender.sendMessag e(PooledParallelSender.java:53) at org.apache.catalina.tribes.transport.ReplicationTransmitter.sendMessage( ReplicationTransmitter.java:80) at org.apache.catalina.tribes.group.ChannelCoordinator.sendMessage(ChannelC oordinator.java:78) at org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(Chan nelInterceptorBase.java:75) at org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor.send Message(ThroughputInterceptor.java:61) at org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(Chan nelInterceptorBase.java:75) at org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor .sendMessage(MessageDispatchInterceptor.java:73) at org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(Chan nelInterceptorBase.java:75) at org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.sendMes sage(TcpFailureDetector.java:87) at org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(Chan nelInterceptorBase.java:75) at org.apache.catalina.tribes.group.GroupChannel.send(GroupChannel.java:216 ) at org.apache.catalina.tribes.group.GroupChannel.send(GroupChannel.java:175 ) at org.apache.catalina.tribes.tipis.LazyReplicatedMap.publishEntryInfo(Lazy ReplicatedMap.java:158) at org.apache.catalina.tribes.tipis.AbstractReplicatedMap.mapMemberAdded(Ab stractReplicatedMap.java:677) at org.apache.catalina.tribes.tipis.AbstractReplicatedMap.replyRequest(Abst ractReplicatedMap.java:494) at org.apache.catalina.tribes.group.RpcChannel.messageReceived(RpcChannel.j ava:124) at org.apache.catalina.tribes.group.GroupChannel.messageReceived(GroupChann el.java:269) at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived( ChannelInterceptorBase.java:79) at org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.message Received(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.mess ageReceived(ThroughputInterceptor.java:86) at org.apache.catalina.tribes.group.ChannelInterceptorBase.messageReceived( ChannelInterceptorBase.java:79) at org.apache.catalina.tribes.group.ChannelCoordinator.messageReceived(Chan nelCoordinator.java:241) at org.apache.catalina.tribes.transport.ReceiverBase.messageDataReceived(Re ceiverBase.java:225) at org.apache.catalina.tribes.transport.nio.NioReplicationTask.drainChannel (NioReplicationTask.java:188) at org.apache.catalina.tribes.transport.nio.NioReplicationTask.run(NioRepli cationTask.java:91) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto r.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja va:908) at java.lang.Thread.run(Thread.java:619) Caused by: org.apache.catalina.tribes.RemoteProcessException: Received a failed ack:org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA Session replication is not working as expected for me. I am using the apache webserver as SLB for the tomcats. I have been debugging the above problems for a long time now but haven't found the solution yet. Any ideas of what might be the problem? I am suspecting that the tomcats are not communicating well through the multicast address but I am not sure. Thanks for your help, Regards, Josef