Think of a stateful session bean as an extension of the client. By
storing the remote reference inside your session, you are attempting to
persist your "Client extension" across 2 different clients (2 different
tomcat instances). I don't think this is a sensible idea, and I'm not
sure it's even allowed.
I would advise you not to store remote references inside your session
objects. Try storing just the current 'state' inside the session. Use a
ServiceLocator to get an instance of the session bean each time you need
it, using the current session to populate the state. This may work
better for you.
Regards,
Andy
-----Original Message-----
From: Suraj Prabhu
To: [EMAIL PROTECTED]
Sent: 19/03/2004 07:34
Subject: HttpSession Replication in Tomcat Cluster not working with
EJB's!
Hi everybody,
I am trying to cluster Tomcat Servers ver 5.0.18 (Two servers) and my
application servlets are accessing Stateful session beans. Typically,
the first invocation of the servlet gets the Remote of the SFSB and
stores it into the session. The other Tomcat's in the cluster throw up
an error "ClassNotFoundException while loading persisted sessions". I
have the same war file deployed in all the Tomcats and the Tomcats in
turn talk to the same app server (JBOSS 3.2.3). I am attaching my
configuration and log outputs of both the servers. Would like to know if
this is a bug/limitation or is there a solution to it.
Cheers
Suraj
------------------------------------------------------------------
This is the log file o/p of the first server (which the client actually
is accessing):
INFO: Jk running ID=0 time=0/16 config=C:\Tomcat5\conf\jk2.properties
Mar 18, 2004 4:25:40 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 5297 ms
Mar 18, 2004 4:26:20 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster
memberAdded
INFO: Replication member
added:org.apache.catalina.cluster.mcast.McastMember[tcp://10.5.18.9:4001
,10.5.18.9,4001, alive=16]
--------------------------------------------------------------------
This is the log file o/p of the second server (which starts up and joins
the cluster after a session has been created in the first server)
Mar 18, 2004 4:25:12 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on port 8888
Mar 18, 2004 4:25:12 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1125 ms
Mar 18, 2004 4:25:12 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Mar 18, 2004 4:25:12 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.0.18
Mar 18, 2004 4:25:12 PM org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
Mar 18, 2004 4:25:12 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster
start
INFO: Cluster is about to start
Mar 18, 2004 4:25:12 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster
start
INFO: Sleeping for 2000 secs to establish cluster membership
Mar 18, 2004 4:25:12 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster
memberAdded
INFO: Replication member
added:org.apache.catalina.cluster.mcast.McastMember[tcp://10.5.18.27:400
1,10.5.18.27,4001, alive=45657]
Mar 18, 2004 4:25:14 PM org.apache.catalina.core.StandardHost
getDeployer
INFO: Create Host deployer for direct deployment ( non-jmx )
Mar 18, 2004 4:25:14 PM org.apache.catalina.core.StandardHostDeployer
install
INFO: Processing Context configuration file URL
file:C:\Tomcat5\conf\Catalina\localhost\admin.xml
Mar 18, 2004 4:25:15 PM org.apache.struts.util.PropertyMessageResources
<init>
INFO: Initializing, config='org.apache.struts.util.LocalStrings',
returnNull=true
Mar 18, 2004 4:25:15 PM org.apache.struts.util.PropertyMessageResources
<init>
INFO: Initializing, config='org.apache.struts.action.ActionResources',
returnNull=true
Mar 18, 2004 4:25:15 PM org.apache.struts.util.PropertyMessageResources
<init>
INFO: Initializing,
config='org.apache.webapp.admin.ApplicationResources', returnNull=true
Mar 18, 2004 4:25:16 PM org.apache.catalina.core.StandardHostDeployer
install
INFO: Processing Context configuration file URL
file:C:\Tomcat5\conf\Catalina\localhost\balancer.xml
Mar 18, 2004 4:25:16 PM org.apache.catalina.core.StandardHostDeployer
install
INFO: Processing Context configuration file URL
file:C:\Tomcat5\conf\Catalina\localhost\manager.xml
Mar 18, 2004 4:25:16 PM org.apache.catalina.core.StandardHostDeployer
install
INFO: Installing web application at context path /TestWeb from URL
file:C:/Tomcat5/webapps/TestWeb
Mar 18, 2004 4:25:17 PM org.apache.catalina.cluster.session.DeltaManager
start
INFO: Starting clustering manager...:/TestWeb
Mar 18, 2004 4:25:17 PM org.apache.catalina.cluster.session.DeltaManager
doLoad
SEVERE: ClassNotFoundException while loading persisted sessions:
java.lang.ClassNotFoundException: chnhr.EmployeeEditorSB
java.lang.ClassNotFoundException: chnhr.EmployeeEditorSB
at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLo
ader.java:891)
at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLo
ader.java:756)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:219)
at
java.io.ObjectInputStream.resolveProxyClass(ObjectInputStream.java:630)
at
java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1469)
at
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1432)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626
)
at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at
org.apache.catalina.cluster.session.DeltaSession.readObject(DeltaSession
.java:1456)
at
org.apache.catalina.cluster.session.DeltaSession.readObjectData(DeltaSes
sion.java:921)
at
org.apache.catalina.cluster.session.DeltaManager.doLoad(DeltaManager.jav
a:480)
at
org.apache.catalina.cluster.session.DeltaManager.messageReceived(DeltaMa
nager.java:869)
at
org.apache.catalina.cluster.session.DeltaManager.messageDataReceived(Del
taManager.java:787)
at
org.apache.catalina.cluster.tcp.SimpleTcpCluster.messageDataReceived(Sim
pleTcpCluster.java:710)
at
org.apache.catalina.cluster.io.ObjectReader.execute(ObjectReader.java:11
7)
at
org.apache.catalina.cluster.tcp.TcpReplicationThread.drainChannel(TcpRep
licationThread.java:175)
at
org.apache.catalina.cluster.tcp.TcpReplicationThread.run(TcpReplicationT
hread.java:113)
Mar 18, 2004 4:25:17 PM org.apache.catalina.cluster.session.DeltaManager
messageReceived
SEVERE: Unable to receive message through TCP channel
java.lang.ClassNotFoundException: chnhr.EmployeeEditorSB
at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLo
ader.java:891)
at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLo
ader.java:756)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:219)
at
java.io.ObjectInputStream.resolveProxyClass(ObjectInputStream.java:630)
at
java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1469)
at
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1432)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626
)
at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at
org.apache.catalina.cluster.session.DeltaSession.readObject(DeltaSession
.java:1456)
at
org.apache.catalina.cluster.session.DeltaSession.readObjectData(DeltaSes
sion.java:921)
at
org.apache.catalina.cluster.session.DeltaManager.doLoad(DeltaManager.jav
a:480)
at
org.apache.catalina.cluster.session.DeltaManager.messageReceived(DeltaMa
nager.java:869)
at
org.apache.catalina.cluster.session.DeltaManager.messageDataReceived(Del
taManager.java:787)
at
org.apache.catalina.cluster.tcp.SimpleTcpCluster.messageDataReceived(Sim
pleTcpCluster.java:710)
at
org.apache.catalina.cluster.io.ObjectReader.execute(ObjectReader.java:11
7)
at
org.apache.catalina.cluster.tcp.TcpReplicationThread.drainChannel(TcpRep
licationThread.java:175)
at
org.apache.catalina.cluster.tcp.TcpReplicationThread.run(TcpReplicationT
hread.java:113)
Mar 18, 2004 4:25:17 PM org.apache.catalina.cluster.session.DeltaManager
start
WARNING: Manager[/TestWeb], requesting session state from
org.apache.catalina.cluster.mcast.McastMember[tcp://10.5.18.27:4001,10.5
.18.27,4001, alive=45657]. This operation will timeout if no session
state has been received within 60 seconds
Mar 18, 2004 4:26:17 PM org.apache.catalina.cluster.session.DeltaManager
start
SEVERE: Manager[/TestWeb], No session state received, timing out.
Mar 18, 2004 4:26:17 PM org.apache.catalina.core.StandardHostDeployer
install
INFO: Installing web application at context path /jsp-examples from URL
file:C:\Tomcat5\webapps\jsp-examples
Mar 18, 2004 4:26:17 PM org.apache.catalina.core.StandardHostDeployer
install
INFO: Installing web application at context path from URL
file:C:\Tomcat5\webapps\ROOT
Mar 18, 2004 4:26:17 PM org.apache.catalina.core.StandardHostDeployer
install
INFO: Installing web application at context path /servlets-examples from
URL file:C:\Tomcat5\webapps\servlets-examples
Mar 18, 2004 4:26:17 PM org.apache.catalina.core.StandardHostDeployer
install
INFO: Installing web application at context path /tomcat-docs from URL
file:C:\Tomcat5\webapps\tomcat-docs
Mar 18, 2004 4:26:17 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on port 8888
------------------------------------------------------------------------
----------------------------
This is my cluster configuration
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
name="TomcatCluster"
debug="10"
serviceclass="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"
tcpThreadCount="6"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
printToScreen="false"
expireSessionsOnShutdown="false"
useDirtyFlag="false"
replicationMode="pooled"
/>
<Valve
className="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
___________________________________________________________________
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]