Java Camel-CXF-JMS连接问题

Java Camel-CXF-JMS连接问题,java,apache-camel,Java,Apache Camel,我试图通过camelcxf客户机连接weblogicjms主题。但是,它给出了以下错误 此问题可能是因为JAR不兼容 但是,我不确定是哪个jar版本的SpringJMS导致了这个问题 我正在使用 骆驼版本:2.11.3 spring-jms-3.0.4.RELEASE.jar org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; neste

我试图通过camelcxf客户机连接weblogicjms主题。但是,它给出了以下错误

此问题可能是因为JAR不兼容

但是,我不确定是哪个jar版本的SpringJMS导致了这个问题

我正在使用

骆驼版本:2.11.3
spring-jms-3.0.4.RELEASE.jar

org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; nested exception is weblogic.jms.common.JMSException: weblogic.messaging.dispatcher.DispatcherException: java.rmi.UnmarshalException: Problem deserializing error response; nested exception is: 
      java.io.InvalidClassException: javax.jms.JMSException; local class incompatible: stream classdesc serialVersionUID = 8951994251593378324, local class serialVersionUID = 2368476267211489441
      at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:316)
      at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:168)
      at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:469)
      at org.springframework.jms.core.JmsTemplate.receiveSelected(JmsTemplate.java:703)
      at org.springframework.jms.core.JmsTemplate.receive(JmsTemplate.java:681)
      at org.springframework.jms.core.JmsTemplate.receive(JmsTemplate.java:672)
      at org.apache.camel.component.jms.JmsPollingConsumer.receive(JmsPollingConsumer.java:60)
      at org.apache.camel.component.jms.JmsPollingConsumer.receive(JmsPollingConsumer.java:50)
      at org.apache.camel.impl.ConsumerCache.receive(ConsumerCache.java:105)
      at org.apache.camel.impl.DefaultConsumerTemplate.receive(DefaultConsumerTemplate.java:82)
      at examples.TestSimpleBuilder2.main(TestSimpleBuilder2.java:65)
Caused by: weblogic.jms.common.JMSException: weblogic.messaging.dispatcher.DispatcherException: java.rmi.UnmarshalException: Problem deserializing error response; nested exception is: 
      java.io.InvalidClassException: javax.jms.JMSException; local class incompatible: stream classdesc serialVersionUID = 8951994251593378324, local class serialVersionUID = 2368476267211489441
      at weblogic.jms.dispatcher.DispatcherAdapter.convertToJMSExceptionAndThrow(DispatcherAdapter.java:116)
      at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSyncNoTran(DispatcherAdapter.java:61)
      at weblogic.jms.client.JMSSession.createDestination(JMSSession.java:3192)
      at weblogic.jms.client.JMSSession.createTopic(JMSSession.java:2427)
      at weblogic.jms.client.WLSessionImpl.createTopic(WLSessionImpl.java:1123)
      at org.springframework.jms.support.destination.DynamicDestinationResolver.resolveTopic(DynamicDestinationResolver.java:82)
      at org.springframework.jms.support.destination.DynamicDestinationResolver.resolveDestinationName(DynamicDestinationResolver.java:63)
      at org.springframework.jms.support.destination.JmsDestinationAccessor.resolveDestinationName(JmsDestinationAccessor.java:100)
      at org.springframework.jms.core.JmsTemplate.access$2(JmsTemplate.java:1)
      at org.springframework.jms.core.JmsTemplate$10.doInJms(JmsTemplate.java:705)
      at org.springframework.jms.core.JmsTemplate$10.doInJms(JmsTemplate.java:1)
      at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:466)
      ... 8 more
Caused by: weblogic.messaging.dispatcher.DispatcherException: java.rmi.UnmarshalException: Problem deserializing error response; nested exception is: 
      java.io.InvalidClassException: javax.jms.JMSException; local class incompatible: stream classdesc serialVersionUID = 8951994251593378324, local class serialVersionUID = 2368476267211489441
      at weblogic.messaging.dispatcher.DispatcherWrapperState.dispatchSyncTran(DispatcherWrapperState.java:345)
      at weblogic.messaging.dispatcher.DispatcherWrapperState.dispatchSyncNoTran(DispatcherWrapperState.java:381)
      at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSyncNoTran(DispatcherAdapter.java:59)
      ... 18 more
Caused by: java.rmi.UnmarshalException: Problem deserializing error response; nested exception is: 
      java.io.InvalidClassException: javax.jms.JMSException; local class incompatible: stream classdesc serialVersionUID = 8951994251593378324, local class serialVersionUID = 2368476267211489441
      at weblogic.rjvm.ResponseImpl.getThrowable(ResponseImpl.java:195)
      at weblogic.messaging.dispatcher.DispatcherProxy.unmarshalResponse(DispatcherProxy.java:263)
      at weblogic.messaging.dispatcher.DispatcherProxy.dispatchSyncTranFuture(DispatcherProxy.java:134)
      at weblogic.messaging.dispatcher.DispatcherWrapperState.dispatchSyncTran(DispatcherWrapperState.java:334)
      ... 20 more
Caused by: java.io.InvalidClassException: javax.jms.JMSException; local class incompatible: stream classdesc serialVersionUID = 8951994251593378324, local class serialVersionUID = 2368476267211489441
      at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:604)
      at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601)
      at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)
      at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601)
      at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
      at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1970)
      at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:498)
      at java.lang.Throwable.readObject(Throwable.java:913)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)
      at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1872)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1777)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
      at weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:208)
      at weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:599)
      at weblogic.rjvm.ResponseImpl.getThrowable(ResponseImpl.java:193)
      ... 23 more

发送方和接收方似乎有不同版本的消息类

java.io.InvalidClassException: javax.jms.JMSException; local class incompatible: stream classdesc serialVersionUID = 8951994251593378324, local class serialVersionUID = 2368476267211489441
您是否可以重新生成serialVersionUID并在生产者或使用者上重新编译一些代码


避免此类问题的一个选择是将数据序列化为XML或JSON,而不是依赖Java的内置序列化支持。

您是否检查了类路径中是否有与Weblogic服务器版本匹配的Weblogic JMS客户端JAR?是,所有必需的JAR都存在于类路径中。任何有关Camel CXF Client server for Weblogic JMS的参考示例都会非常有用吗?您会从Camel向Weblogic JMS发送什么类型的消息?如果是Java对象消息,则需要确保双方的对象类版本是正确的。我编写了一个指向WebLogicJMS的消费者。它能够连接到Weblogic上的JMS主题,但在查看显示此错误的消息时,它没有返回消息。是的,我检查了Weblogic.jar是否不匹配。现在,问题解决了。我犯了完全相同的错误,但根本原因不同。我在
SimpleJMListenerEndpoint
的选择器值中有空格/特殊字符,这显然不好。我可以保留空格,但必须将整个值用单引号括起来才能这样做。作为补充说明,我使用的是WebLogic 12.2.1.3.0。