On Jun 23, 2008, at 12:16 PM, Jason Warner wrote:

I've been messing around a little bit with clustering by following the directions for clustering configuration for jetty[1] but modifying the instructions to work with tomcat. I've found that the sample app linked in the example deploys succesfully on the 2.1.1 release but not on the latest branches/2.1. A class cast exception is received when attempting to deploy the app[2]. It seems that 2.1.1 uses a milestone release of 2.0 rather than the full released version. I updated 2.1.1 locally to use the full 2.0 release of wadi, and that resulted in the same error I was seeing on branches/ 2.1. Anybody have any thoughts on what could cause this or how to fix it?

[1] http://cwiki.apache.org/GMOxDEV/clustering-configuration-for-jetty.html

[2]

12:00:33,876 ERROR [BasicServiceSpaceDispatcher] See nested
org.codehaus.wadi.group.MessageExchangeException: java.lang.ClassCastException: cannot assign instance of org.apache.catalina.tribes.UniqueId to field org.codehaus.wadi.tribes.TribesPeer.uniqueId of type org.apache.catalina.tribes.UniqueId in instance of org.codehaus.wadi.tribes.TribesPeer at org .codehaus .wadi .servicespace .basic .TransformEnvelopeInterceptor .onInboundEnvelope(TransformEnvelopeInterceptor.java:46) at org .codehaus .wadi .group .impl.AbstractDispatcher.onInboundEnvelope(AbstractDispatcher.java: 308) at org .codehaus .wadi .group.impl.AbstractDispatcher.onEnvelope(AbstractDispatcher.java:92) at org .codehaus .wadi .servicespace .basic.ServiceSpaceEndpoint.dispatch(ServiceSpaceEndpoint.java:49) at org .codehaus .wadi .group .impl.ServiceEndpointWrapper.dispatch(ServiceEndpointWrapper.java:50) at org.codehaus.wadi.group.impl.BasicEnvelopeDispatcherManager $DispatchRunner.run(BasicEnvelopeDispatcherManager.java:121) at java.util.concurrent.ThreadPoolExecutor $Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:675)
    at java.lang.Thread.run(Thread.java:613)
Caused by: java.lang.ClassCastException: cannot assign instance of org.apache.catalina.tribes.UniqueId to field org.codehaus.wadi.tribes.TribesPeer.uniqueId of type org.apache.catalina.tribes.UniqueId in instance of org.codehaus.wadi.tribes.TribesPeer at java.io.ObjectStreamClass $FieldReflector.setObjFieldValues(ObjectStreamClass.java:2004) at java.io.ObjectStreamClass.setObjFieldValues(ObjectStreamClass.java: 1184) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java: 1914) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java: 1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java: 1305) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java: 1908) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java: 1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java: 1305) at java.io.ObjectInputStream.readObject(ObjectInputStream.java: 348) at org .codehaus .wadi .servicespace .basic .BasicServiceSpaceEnvelopeHelper .transformInboundEnvelope(BasicServiceSpaceEnvelopeHelper.java:123) at org .codehaus .wadi .servicespace .basic .TransformEnvelopeInterceptor .onInboundEnvelope(TransformEnvelopeInterceptor.java:44)
    ... 8 more

Hi Jason,
Is the example working with Jetty? Or is it just 2.1.2-SNAPSHOT with Tomcat that is broken?

I see there were changes to http://svn.codehaus.org/wadi/tags/2.0/wadi-core/src/main/java/org/codehaus/wadi/servicespace/basic/ between 2.0-M10 and 2.0. Seems to be a Classloader problem related to Wadi 2.0. Suggest you use a debugger to inspect the Classloader being used to deserialize the UniqueId object. We seem to be loading UniqueId classes from two different Classloaders -- thus the ClassCastException. Once we figure out the two Classloaders being used, can start to sort out the inconsitencies...

--kevan 

Reply via email to