Hi You can disable mapping JMX messages using mapJmsMessage=false option
See http://camel.apache.org/jms On Thu, Apr 7, 2011 at 8:49 PM, Gert Villemos <gville...@yahoo.de> wrote: > I post this here and not in the activemq forum, as its a Camel route that > courses the problem. > > In our setup I have Camel routes configured to inject to / read from a > activemq topic called 'Parameters'. Each message in the body contains a POJO > of type 'org.hbird.exchange.type.Parameter'. I have no problems with this > from my Camel routes. > > But when I use the Activemq console to create a new test route as shown > below, it fails; > > <?xml version="1.0" encoding="UTF-8" standalone="yes"?> > > This is an example route. > > > > > The topic is not created. Looking at the activemq log, I see the error > messages below repeated fro each message; > > 2011-04-07 20:44:35,603 | WARN | Execution of JMS message listener failed, > and no ErrorHandler has been set. | > org.springframework.jms.listener.DefaultMessageListenerContainer | > DefaultMessageListenerContainer-1 > 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: > org.hbird.business.simpleparametersimulator.ConstantParameter. Message: > ActiveMQObjectMessage {commandId = 8299, responseRequired = true, messageId > = ID:DE-L071208-50054-1302201283142-0:4:8:1:1035, originalDestination = > null, originalTransactionId = null, producerId = > ID:DE-L071208-50054-1302201283142-0:4:8:1, destination = topic://Parameters, > transactionId = null, expiration = 0, timestamp = 1302201875305, arrival = > 0, brokerInTime = 1302201875305, brokerOutTime = 1302201875305, > correlationId = null, replyTo = null, persistent = true, type = null, > priority = 4, groupID = null, groupSequence = 0, targetConsumerId = null, > compressed = false, userID = null, content = > org.apache.activemq.util.ByteSequence@70c64bc2, marshalledProperties = > org.apache.activemq.util.ByteSequence@6a97e765, dataStructure = null, > redeliveryCounter = 0, size = 2093, properties = {timestamp=1302201278281, > unit=State, description=The State of the Payload. '1' means enabled. '0' > means disabled., name=Payload State, > logger=org.apache.log4j.Logger@48dbb335, value=1.0, > serialVersionUID=-5803219773253020746, > objectid=1f530039-9c06-45a5-8841-23bd6358150e, clazz=java.lang.Double, > firedTime=Thu Apr 07 20:44:35 CEST 2011, datasetidentifier=0}, > 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.(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:560) > at > org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:498) > at > org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:467) > 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:1056) > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1048) > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947) > 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: > org.hbird.business.simpleparametersimulator.ConstantParameter > at > org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:35) > at > org.apache.activemq.command.ActiveMQObjectMessage.getObject(ActiveMQObjectMessage.java:186) > at > org.apache.camel.component.jms.JmsBinding.extractBodyFromJms(JmsBinding.java:125) > ... 20 more > Caused by: java.lang.ClassNotFoundException: > org.hbird.business.simpleparametersimulator.ConstantParameter > at java.net.URLClassLoader$1.run(URLClassLoader.java:202) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:190) > at java.lang.ClassLoader.loadClass(ClassLoader.java:307) > at java.lang.ClassLoader.loadClass(ClassLoader.java:248) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:247) > at > org.apache.activemq.util.ClassLoadingAwareObjectInputStream.load(ClassLoadingAwareObjectInputStream.java:63) > at > org.apache.activemq.util.ClassLoadingAwareObjectInputStream.resolveClass(ClassLoadingAwareObjectInputStream.java:37) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574) > at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731) > 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:184) > ... 21 more > > > Copying the library containing the type into the library path of activemq > solves the problem, but I wonder why the routing depends on knowledge of the > class? Why cant I route any message? The answer is most likely that JMS > tries to serialize the bean and fails because it doesnt know it, but cant > this be done in a generic manner? Why does the 'middleware' activemq have to > know about the types I route in my business tier? > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/Class-not-found-when-Creating-Camel-route-through-Activemq-console-tp4289185p4289185.html > Sent from the Camel - Users mailing list archive at Nabble.com. > -- Claus Ibsen ----------------- FuseSource Email: cib...@fusesource.com Web: http://fusesource.com CamelOne 2011: http://fusesource.com/camelone2011/ Twitter: davsclaus Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/