activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jim Newsham <jnews...@referentia.com>
Subject can't deserialize proxy instance with non-jdk interface
Date Wed, 10 Nov 2010 03:15:43 GMT

Hi,

I just ran into a class loading exception when trying to serialize a 
proxy instance (an instance of java.lang.reflect.Proxy).  I have no 
problems serializing our non-proxy objects.  My proxy handler class is 
serializable (as required) and located in the same class path as the 
non-proxy classes.  I have found that if I construct my proxy using jdk 
interfaces only (i.e., java.util.Collection), then it works, but if I 
use one of our own interfaces, ActiveMQ fails to load it as follows:

Caused by: java.lang.IllegalArgumentException: interface 
com.referentia.liveaction.common.core.camel.clientstream.StreamIdProvider is 
not visible from class loader
     at java.lang.reflect.Proxy.getProxyClass(Proxy.java:353)
     at 
org.apache.activemq.util.ClassLoadingAwareObjectInputStream.resolveProxyClass(ClassLoadingAwareObjectInputStream.java:48)
     ... 34 more

Here's the entire stack trace:

2010-11-09 17:02:37,660 [DefaultMessageListenerContainer-1] WARN  
org.springframework.jms.listener.DefaultMessageListenerContainer - 
Execution of JMS message listener failed
org.apache.camel.RuntimeCamelException: Failed to extract body due to: 
javax.jms.JMSException: Failed to build body from content. Serializable 
class not available to broker. Reason: java.lang.ClassNotFoundException. 
Message: ActiveMQObjectMessage {commandId = 19, responseRequired = true, 
messageId = ID:rsi-eng-newsham-56811-1289358131963-0:2:3:1:3, 
originalDestination = null, originalTransactionId = null, producerId = 
ID:rsi-eng-newsham-56811-1289358131963-0:2:3:1, destination = 
queue://ServiceExport, transactionId = null, expiration = 1289358177656, 
timestamp = 1289358157656, arrival = 0, brokerInTime = 1289358157656, 
brokerOutTime = 1289358157658, correlationId = 
215512f0-0d7e-4f3c-8cc2-5e459d59b582, replyTo = 
temp-queue://ID:rsi-eng-newsham-56811-1289358131963-0:2:1, persistent = 
true, type = null, priority = 4, groupID = null, groupSequence = 0, 
targetConsumerId = null, compressed = false, userID = null, content = 
org.apache.activemq.util.ByteSequence@115e628, marshalledProperties = 
org.apache.activemq.util.ByteSequence@b977bc, dataStructure = null, 
redeliveryCounter = 0, size = 1860, properties = 
{sessionId=04fd4b1b-0a01-40f7-8bf8-fda514c773e9}, readOnlyProperties = 
true, readOnlyBody = true, droppable = false}
     at 
org.apache.camel.component.jms.JmsBinding.extractBodyFromJms(JmsBinding.java:158)
     at 
org.apache.camel.component.jms.JmsMessage.createBody(JmsMessage.java:183)
     at org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:42)
     at 
org.apache.camel.impl.DefaultUnitOfWork.<init>(DefaultUnitOfWork.java:65)
     at 
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:90)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
     at 
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:91)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:85)
     at 
org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:85)
     at 
org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:543)
     at 
org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:482)
     at 
org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451)
     at 
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)
     at 
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)
     at 
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982)
     at 
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974)
     at 
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876)
     at java.lang.Thread.run(Thread.java:662)
Caused by: javax.jms.JMSException: Failed to build body from content. 
Serializable class not available to broker. Reason: 
java.lang.ClassNotFoundException
     at 
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:35)
     at 
org.apache.activemq.command.ActiveMQObjectMessage.getObject(ActiveMQObjectMessage.java:179)
     at 
org.apache.camel.component.jms.JmsBinding.extractBodyFromJms(JmsBinding.java:125)
     ... 20 more
Caused by: java.lang.ClassNotFoundException
     at 
org.apache.activemq.util.ClassLoadingAwareObjectInputStream.resolveProxyClass(ClassLoadingAwareObjectInputStream.java:50)
     at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1530)
     at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1492)
     at 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
     at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1666)
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1322)
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
     at 
org.apache.camel.component.bean.BeanInvocation.readExternal(BeanInvocation.java:105)
     at 
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1791)
     at 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
     at 
org.apache.activemq.command.ActiveMQObjectMessage.getObject(ActiveMQObjectMessage.java:177)
     ... 21 more
Caused by: java.lang.IllegalArgumentException: interface 
com.referentia.liveaction.common.core.camel.clientstream.StreamIdProvider is 
not visible from class loader
     at java.lang.reflect.Proxy.getProxyClass(Proxy.java:353)
     at 
org.apache.activemq.util.ClassLoadingAwareObjectInputStream.resolveProxyClass(ClassLoadingAwareObjectInputStream.java:48)
     ... 34 more

Thanks,
Jim

Mime
View raw message