Uploaded image for project: 'FUSE Mediation Router'
  1. FUSE Mediation Router
  2. MR-502

Cannot use OSGi blueprint with ActiveMQ when sending javax.jms.ObjectMessage with JAXB annotations over the JMS queues

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 2.7.1-fuse-00-27
    • None
    • None

    Description

      Hi,

      I receive a ClassCastException (see full stack trace below) when I use an OSGi blueprint with ActiveMQ when sending javax.jms.ObjectMessage with JAXB annotations over the JMS queues. If I use a spring configuration everything works ok.

      I've attached two versions of the test case, one in spring and one in blueprint. They are based off our camel-blueprint and camel-osgi demos. Essentially a JAXB object is created and put onto an activemq queue. When the second route is activated it is unable to read from the queue resulting in the message below.

      Possible Workaround

      I noticed if I transfer the exception, I can avoid this error message.

       <from uri="activemq:queue:testBlueprintEmployee?transferException=true"/>
      

      If you need anything else, please let me know.

      Susan

      Stack Trace

      11:06:34,937 | WARN | ueprintEmployee] | JmsMessageListenerContainer | 94 - org.springframework.jms - 3.0.5.RELEASE | Execution of JMS message listener failed, and no ErrorHandler has been set.
      org.apache.camel.RuntimeCamelException: java.lang.ClassCastException: cannot assign instance of javax.xml.bind.JAXBElement to field org.apache.servicemix.examples.camel.Employee.userLabel of type javax.xml.bind.JAXBElement in instance of org.apache.servicemix.examples.camel.Employee
      at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1139)[78:org.apache.camel.camel-core:2.7.1.fuse-00-27]
      at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:122)[93:org.apache.camel.camel-jms:2.7.1.fuse-00-27]
      at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:560)[94:org.springframework.jms:3.0.5.RELEASE]
      at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:498)[94:org.springframework.jms:3.0.5.RELEASE]
      at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:467)[94:org.springframework.jms:3.0.5.RELEASE]
      at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325)[94:org.springframework.jms:3.0.5.RELEASE]
      at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263)[94:org.springframework.jms:3.0.5.RELEASE]
      at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)[94:org.springframework.jms:3.0.5.RELEASE]
      at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)[94:org.springframework.jms:3.0.5.RELEASE]
      at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)[94:org.springframework.jms:3.0.5.RELEASE]
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_26]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_26]
      at java.lang.Thread.run(Thread.java:680)[:1.6.0_26]
      Caused by: java.lang.ClassCastException: cannot assign instance of javax.xml.bind.JAXBElement to field org.apache.servicemix.examples.camel.Employee.userLabel of type javax.xml.bind.JAXBElement in instance of org.apache.servicemix.examples.camel.Employee
      at java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(ObjectStreamClass.java:2039)[:1.6.0_26]
      at java.io.ObjectStreamClass.setObjFieldValues(ObjectStreamClass.java:1212)[:1.6.0_26]
      at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1952)[:1.6.0_26]
      at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)[:1.6.0_26]
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)[:1.6.0_26]
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)[:1.6.0_26]
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)[:1.6.0_26]
      at org.apache.activemq.command.ActiveMQObjectMessage.getObject(ActiveMQObjectMessage.java:184)[52:org.apache.activemq.activemq-core:5.5.0.fuse-00-27]
      at org.apache.camel.component.jms.JmsBinding.extractBodyFromJms(JmsBinding.java:127)[93:org.apache.camel.camel-jms:2.7.1.fuse-00-27]
      at org.apache.camel.component.jms.JmsMessage.createBody(JmsMessage.java:204)[93:org.apache.camel.camel-jms:2.7.1.fuse-00-27]
      at org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:41)[78:org.apache.camel.camel-core:2.7.1.fuse-00-27]
      at org.apache.camel.impl.DefaultUnitOfWork.<init>(DefaultUnitOfWork.java:82)[78:org.apache.camel.camel-core:2.7.1.fuse-00-27]
      at org.apache.camel.processor.UnitOfWorkProcessor.createUnitOfWork(UnitOfWorkProcessor.java:147)[78:org.apache.camel.camel-core:2.7.1.fuse-00-27]
      at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:90)[78:org.apache.camel.camel-core:2.7.1.fuse-00-27]
      at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:80)[78:org.apache.camel.camel-core:2.7.1.fuse-00-27]
      at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)[78:org.apache.camel.camel-core:2.7.1.fuse-00-27]
      at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)[78:org.apache.camel.camel-core:2.7.1.fuse-00-27]
      at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)[78:org.apache.camel.camel-core:2.7.1.fuse-00-27]
      at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:106)[78:org.apache.camel.camel-core:2.7.1.fuse-00-27]
      at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:85)[78:org.apache.camel.camel-core:2.7.1.fuse-00-27]
      at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:93)[93:org.apache.camel.camel-jms:2.7.1.fuse-00-27]

      Attachments

        Activity

          People

            gertv_jira Gert Vanthienen (Inactive)
            rhn-support-sjavurek Susan Javurek
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: