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