  | Mailing List | | Home | | Forum Home | | JBoss - Java Application Server | | Tomcat - JSP/Servlet container | | Struts - A MVC web framework | | iText - An open source PDF Java Library | | JDOM - JDOM XML Parser | | JSP - A mailing list about Java Server Pages specification and reference | | J2EE - A mailing list for Java(tm) 2 Platform, Enterprise Edition | | J2EE Pattern - An interest list for Sun Java Center J2EE Pattern Catalog | | Servlet - A mailing list for discussion about Sun Microsystem's Java Servlet API Technology | |
Struts & Hibernate
|
|
|
  | | | -none- | -none- 2007-10-02 - By Filip Hanik - Dev Lists
Back Daniel M Garland wrote: > Thanks for the response > > So is it better to have one cluster rather than one per host? easier to manage and troubleshoot one cluster than many. > What about hosts that don't have clustering enabled? that's not a problem, clustering only applies to webapps with the <distributable/> element, if the all apps in a host are non clustered, then no clustering will be applied. > Surely there are advantages with having a separate cluster, its > listening on a different address so it would have its own message > buffer etc.? I see that as disadvantages, but thats a personal opinion. > > My current config is roughly as follows : I have two clusters > transmitting on differnet multicast addresses (but on the same port) > while I am binding my TCP listener to the external IP of the Tomcat > server on a different port: > > <Engine name="Catalina" defaultHost="localhost" jvmRoute="bulk"> > > ... > > <Host name="myvirtualhost.com" appBase="/var/webapps/domain.com" > unpackWars="true" autoDeploy="true"> > > ... > > <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.5" > mcastPort="45565" > mcastFrequency="500" > mcastDropTime="20000"/> > > <Receiver > > className="org.apache.catalina.cluster.tcp.ReplicationListener" > tcpListenAddress="10.78.1.32" > tcpListenPort="5000" > tcpSelectorTimeout="100" > tcpThreadCount="6"/> > > <Sender > > className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" > replicationMode="pooled" > ackTimeout="15000" > stateTransferTimeout="45" > waitForAck="true"/> > > <Valve > className="org.apache.catalina.cluster.tcp.ReplicationValve" > > filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.css;.*\.txt;"/> > <ClusterListener > className="org.apache.catalina.cluster.session.ClusterSessionListener"/> > </Cluster> > </Host> > > <Host name="myothervirtualhost.com" appBase="/var/webapps/blah" > unpackWars="true" autoDeploy="true"> > > ... > > <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="229.0.0.5" > mcastPort="45565" > mcastFrequency="500" > mcastDropTime="20000"/> > > <Receiver > > className="org.apache.catalina.cluster.tcp.ReplicationListener" > tcpListenAddress="10.78.1.32" > tcpListenPort="5100" > tcpSelectorTimeout="100" > tcpThreadCount="6"/> > > <Sender > > className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" > replicationMode="pooled" > ackTimeout="15000" > waitForAck="true"/> > > <Valve > className="org.apache.catalina.cluster.tcp.ReplicationValve" > > filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.css;.*\.txt;"/> > > <ClusterListener > className="org.apache.catalina.cluster.session.ClusterSessionListener"/> > </Cluster> > </Host> > > ... > > </Engine> > > Is there anything amiss with this configuration that would result in > the problems I am seeing? shouldn't be, unless you have some rogue instances running somewhere with the same config
Filip > > Thanks > Dan > > > Filip Hanik - Dev Lists wrote: >> it would have to be the multicast address that is unique to take care >> of the problem, however, easier to run one cluster instance at the >> engine level, the cluster knows what vhost a piece of replicated data >> belongs to >> >> Filip >> >> Daniel M Garland wrote: >>> OK I've figured out what's happening, but not how to fix it! >>> >>> I'm running a single Tomcat instance that is hosting some virtual >>> hosts, and we have three Tapestry web applications. For those >>> unfamiliar with Tapestry, a Visit object is defined to represent the >>> user's session and is sort of a facade to avoid working directly >>> with HttpSession. Hence in a cluster this Visit object is propagated >>> around the cluster. >>> >>> Now, what seems to be the case is that Tomcat is getting muddled up >>> with the different Visit classes in each separate application; which >>> is not good. Not only are the classes in different java packages, >>> but they have unique serialVersionIDs. This then gives me the error: >>> >>> java.io.InvalidClassException: com.mydomain.Visit; local class >>> incompatible: stream classdesc serialVersionUID = -139355480 >>> 5485899996, local class serialVersionUID = 8444624889687850885 >>> >>> and it turns out that -1393554805485899996 is the Visit object from >>> a completely different web application. >>> >>> I'm trying to figure out what changes to my config I made when I >>> went from my old hardware to a new setup, and I believe that the >>> only change is that we configured each virtual host to use its own >>> <cluster> element, rather than having a single cluster for the >>> engine; but I would've thought that having three seperate clusters >>> on different ports/ addresses would help to prevent this sort of >>> thing happening, rather than cause it? >>> >>> Any other reasons why my serialized objects are being confused in >>> this way? >>> >>> Daniel M Garland wrote: >>>> Hi all, >>>> >>>> I've been running two Tomcat 5.5.20 servers in a cluster for some >>>> time on Mac OSx but we've recently moved to 64-bit architecture >>>> (Debian etch) . I tried as far as possible to keep the config the >>>> same, so only the OS has changed (and I also got the Apache >>>> Portable Runtime going). However since moving to this new setup I'm >>>> starting to see the following messages in my catalina.out: >>>> >>>> 25-Sep-2007 (See http://Sep-2007.ora-code.com) 16:35:11 >>>> org.apache.catalina.cluster.session.DeltaManager messageReceived >>>> SEVERE: Manager []: Unable to receive message through TCP channel >>>> java.lang.ClassNotFoundException: >>>> com.mycompany.someSerialiazbleObject >>>> >>>> and sometimes in other web apps I see instead of >>>> ClassNotFoundException: >>>> >>>> java.io.InvalidClassException: >>>> org.mycomapny.someOtherSerializableObject; local class >>>> incompatible: stream classdesc serialVersionUID = >>>> -1393554805485899996, local class serialVersionUID = >>>> 8444624889687850885 >>>> >>>> Now I did some homework here and I've tried the following without >>>> success: >>>> >>>> 1) I've compiled the java files on the server's themselves, so I am >>>> sure that the correct class versions are being used >>>> 2) The object implements java.io.Serializable, and has a generated >>>> serial ID from Eclipse. Incidentally, this Long value matches the >>>> local class serialVersionUID, so I have no idea where the 'stream' >>>> serialVersionUID comes from. >>>> 3) I have the same code running on both the Tomcat servers. >>>> >>>> What I would like to know is where I am supposed to look next for >>>> some answers to this problem. Is there any more information from my >>>> config that would be relevant to post here? >>>> >>>> Thanks in advance, my first 'tomcat-users' post :) >>>> >>>> Dan Garland >>>> daniel.garland@(protected) >>>> >>>> -- Stack Trace -- >>>> 25-Sep-2007 (See http://Sep-2007.ora-code.com) 16:35:11 >>>> org.apache.catalina.cluster.session.DeltaManager messageReceived >>>> SEVERE: Manager []: Unable to receive message through TCP channel >>>> java.lang.ClassNotFoundException: >>>> com.mycompany.someSerialiazbleObject >>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:200) >>>> at java.security.AccessController.doPrivileged(Native Method) >>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:188) >>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:306) >>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:251) >>>> at >>>> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) >>>> at java.lang.Class.forName0(Native Method) >>>> at java.lang.Class.forName(Class.java:242) >>>> at >>>> java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:574) >>>> at >>>> org.apache.catalina.cluster.session.ReplicationStream.resolveClass (ReplicationStream.java:84) >>>> >>>> at >>>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1538) >>>> >>>> at >>>> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460) >>>> at >>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693) >>>> >>>> at >>>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299) >>>> at >>>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:339) >>>> at >>>> org.apache.catalina.cluster.session.DeltaRequest$AttributeInfo .readExternal(DeltaRequest.java:334) >>>> >>>> at >>>> org.apache.catalina.cluster.session.DeltaRequest.readExternal(DeltaRequest .java:246) >>>> >>>> at >>>> org.apache.catalina.cluster.session.DeltaManager.loadDeltaRequest (DeltaManager.java:697) >>>> >>>> at >>>> org.apache.catalina.cluster.session.DeltaManager.handleSESSION_DELTA (DeltaManager.java:1572) >>>> >>>> at >>>> org.apache.catalina.cluster.session.DeltaManager.messageReceived (DeltaManager.java:1522) >>>> >>>> at >>>> org.apache.catalina.cluster.session.DeltaManager.messageDataReceived (DeltaManager.java:1271) >>>> >>>> at >>>> org.apache.catalina.cluster.session.ClusterSessionListener.messageReceived (ClusterSessionListener.java:85) >>>> >>>> at >>>> org.apache.catalina.cluster.tcp.SimpleTcpCluster.receive(SimpleTcpCluster .java:1167) >>>> >>>> at >>>> org.apache.catalina.cluster.tcp.ClusterReceiverBase.messageDataReceived (ClusterReceiverBase.java:426) >>>> >>>> at >>>> org.apache.catalina.cluster.io.ObjectReader.execute(ObjectReader.java:107) >>>> >>>> at >>>> org.apache.catalina.cluster.tcp.TcpReplicationThread.drainChannel (TcpReplicationThread.java:138) >>>> >>>> at >>>> org.apache.catalina.cluster.tcp.TcpReplicationThread.run (TcpReplicationThread.java:69) >>>>
-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ------ To start a new topic, e-mail: users@(protected) To unsubscribe, e-mail: users-unsubscribe@(protected) For additional commands, e-mail: users-help@(protected)
|
|
 |