Hello.
Trying to connect from a 4.1.1 client (running as a servlet in a Tomcat
container) to a 4.0.2 broker, I'm getting the following stack trace in
the server:
Exception in thread "ActiveMQ Transport: tcp:///127.0.0.1:50548"
java.lang.IllegalArgumentException: Invalid version: 2, could not load
org.apache.activemq.openwire.v2.MarshallerFactory
at
org.apache.activemq.openwire.OpenWireFormat.setVersion(OpenWireFormat.java:329)
at
org.apache.activemq.openwire.OpenWireFormat.renegociatWireFormat(OpenWireFormat.java:569)
at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:108)
at
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:122)
at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:87)
at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:127)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException:
org.apache.activemq.openwire.v2.MarshallerFactory
at
org.apache.activemq.util.ClassLoading.loadClass(ClassLoading.java:104)
at
org.apache.activemq.openwire.OpenWireFormat.setVersion(OpenWireFormat.java:327)
... 6 more
Exception in thread "ActiveMQ Transport: tcp:///127.0.0.1:50550"
java.lang.IllegalArgumentException: Invalid version: 2, could not load
org.apache.activemq.openwire.v2.MarshallerFactory
at
org.apache.activemq.openwire.OpenWireFormat.setVersion(OpenWireFormat.java:329)
at
org.apache.activemq.openwire.OpenWireFormat.renegociatWireFormat(OpenWireFormat.java:569)
at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:108)
at
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:122)
at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:87)
at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:127)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException:
org.apache.activemq.openwire.v2.MarshallerFactory
at
org.apache.activemq.util.ClassLoading.loadClass(ClassLoading.java:104)
at
org.apache.activemq.openwire.OpenWireFormat.setVersion(OpenWireFormat.java:327)
... 6 more
Shouldn't they negociate the wire format and fallback to the highest
known at both sides?
Logs from the negotiation attempt at the server:
[DEBUG][2007/06/11.13:26:40.075][ActiveMQ Transport Server:
tcp://dispacher-ps:61635]Sending: WireFormatInfo { version=1,
properties={TightEncodingEnabled=true, TcpNoDelayEnabled=true,
SizePrefixDisabled=false, StackTraceEnabled=true,
MaxInactivityDuration=30000, CacheEnabled=true}, magic=[A,c,t,i,v,e,M,Q]}
[DEBUG][2007/06/11.13:26:40.077][ActiveMQ Transport:
tcp:///127.0.0.1:50546]Received WireFormat: WireFormatInfo { version=2,
properties={TightEncodingEnabled=true, CacheSize=1024,
TcpNoDelayEnabled=true, SizePrefixDisabled=false,
StackTraceEnabled=true, MaxInactivityDuration=30000, CacheEnabled=true},
magic=[A,c,t,i,v,e,M,Q]}
[DEBUG][2007/06/11.13:26:40.077][ActiveMQ Transport:
tcp:///127.0.0.1:50546]tcp:///127.0.0.1:50546 before negotiation:
OpenWireFormat{version=1, cacheEnabled=false, stackTraceEnabled=false,
tightEncodingEnabled=false, sizePrefixDisabled=false}
[DEBUG][2007/06/11.13:26:55.080][ActiveMQ Transport Server:
tcp://dispacher-ps:61635]Transport failed: java.io.IOException: Wire
format negociation timeout: peer did not send his wire format.(Wire
format negociation timeout: peer did not send his wire format.)
In the client side, just a java.io.EOFException trying to create the JMS
Session.
Any idea?
Regards.