Finding all the classes defining the QName class can be done
using ClassLoader.getResources(). Then one could load then and
retrieve the serial UID using introspection i guess ...
On 5/2/07, Gert Vanthienen <[EMAIL PROTECTED]> wrote:
Guillaume,
A quick "Open Type..." in Eclipse also shows me that a lot of the jar
files we use in ServiceMix include their own javax.xml.namespace.QName,
so I suppose it wouldn't be that easy to ensure that only a single
variant of the class gets loaded at runtime either. Do you know of any
tool to quickly examine the serialVersionUIDs of these classes in order
to get this user's problem solved?
Gert
Guillaume Nodet wrote:
> I think one problem may be in the serialization of the MessageExchange
> when
> using the JMS / JCA flows. The exchange contains QName (for target
> service
> and interface) and may also contain other QNames (soap headers are
> stored in
> a map indexed by QNames).
> We can easily change the first ones to use plain strings ({xxx}yy
> format),
> but
> it will be much more difficult for the ones we do not control.
>
> On 5/2/07, Gert Vanthienen <[EMAIL PROTECTED]> wrote:
>>
>> Kit,
>>
>> Apparently, you are using multiple (and different) versions of the
QName
>> class. If this solution is running on multiple JVMs, ensure that
>> they're all of the same version. If it isn't, could you send us the
>> servicemix.xml file? Do you know which are the failing services, as
>> this might help us pinpoint the problem?
>>
>> Gert
>>
>> Kit Plummer wrote:
>> > Getting this a lot when running a few components on the latest
>> > apache-servicemix-fuse release:
>> >
>> > ERROR - JMSFlow - Error processing incoming
>> > broadcast message
>> > javax.jms.JMSException: Failed to build body from bytes. Reason:
>> > java.io.InvalidClassException: javax.xml.namespace.QName; local class
>> > incompatible: stream classdesc serialVersionUID =
4418622981026545151,
>> > local class serialVersionUID = -9120448754896609940
>> > at
>> > org.apache.activemq.util.JMSExceptionSupport.create(
>> JMSExceptionSupport.java:33)
>> >
>> > at
>> > org.apache.activemq.command.ActiveMQObjectMessage.getObject(
>> ActiveMQObjectMessage.java:172)
>> >
>> > at
>> >
>> org.apache.servicemix.jbi.nmr.flow.jms.JMSFlow$3.onMessage(JMSFlow.java
>> :281)
>> >
>> > at
>> > org.apache.activemq.ActiveMQMessageConsumer.dispatch(
>> ActiveMQMessageConsumer.java:841)
>> >
>> > at
>> > org.apache.activemq.ActiveMQSessionExecutor.dispatch(
>> ActiveMQSessionExecutor.java:96)
>> >
>> > at
>> > org.apache.activemq.ActiveMQSessionExecutor.iterate(
>> ActiveMQSessionExecutor.java:165)
>> >
>> > at
>> > org.apache.activemq.thread.PooledTaskRunner.runTask(
>> PooledTaskRunner.java:111)
>> >
>> > at
>> > org.apache.activemq.thread.PooledTaskRunner.access$100(
>> PooledTaskRunner.java:26)
>> >
>> > at
>> >
>> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java
>> :44)
>> >
>> > at
>> >
>>
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask
>>
>> (ThreadPoolExecutor.java:665)
>> >
>> > at
>> >
>>
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run
>>
>> (ThreadPoolExecutor.java:690)
>> >
>> > at java.lang.Thread.run(Thread.java:619)
>> > Caused by: java.io.InvalidClassException: javax.xml.namespace.QName;
>> > local class incompatible: stream classdesc serialVersionUID =
>> > 4418622981026545151, local class serialVersionUID =
>> -9120448754896609940
>> > at
>> > java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:562)
>> > at
>> >
>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
>> > at
>> > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
>> > at
>> > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java
>> :1732)
>> > at
>> > java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>> > at
>> >
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java
:1945)
>> > at
>> > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
>> > at
>> > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java
>> :1753)
>> > at
>> > java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>> > at
>> >
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java
:1945)
>> > at
>> > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
>> > at
>> > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java
>> :1753)
>> > at
>> > java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>> > at
>> > java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
>> > at
>> > org.apache.activemq.command.ActiveMQObjectMessage.getObject(
>> ActiveMQObjectMessage.java:166)
>> >
>> > ... 10 more
>> >
>> > Should I attach my servicemix.xml?
>> >
>> > Kit
>> >
>>
>>
>
>
--
Cheers,
Guillaume Nodet
------------------------
Principal Engineer, IONA
Blog: http://gnodet.blogspot.com/