Java 驼峰路由自动将序列化对象转换为xml

Java 驼峰路由自动将序列化对象转换为xml,java,xml,jaxb,jms,apache-camel,Java,Xml,Jaxb,Jms,Apache Camel,我将camel与JMS一起使用。我有一个路由,它只是将jaxb注释的java对象放在mq上。java对象没有实现serializable,它只有“serialVersionUID” 问题是,对象被转换为XML,并且目标队列具有MQSTR类型的XML消息。这是默认行为吗?我们应该一直依靠它吗?请注意,我们没有从JavaDSL中使用任何封送或解组,如果我们从pom.xml中删除jaxb依赖项,它就不会转换为xml 我的路线就是这样的凡尼拉 from("someRoute") .setExchang

我将camel与JMS一起使用。我有一个路由,它只是将jaxb注释的java对象放在mq上。java对象没有实现serializable,它只有“serialVersionUID”

问题是,对象被转换为XML,并且目标队列具有MQSTR类型的XML消息。这是默认行为吗?我们应该一直依靠它吗?请注意,我们没有从JavaDSL中使用任何封送或解组,如果我们从pom.xml中删除jaxb依赖项,它就不会转换为xml

我的路线就是这样的凡尼拉

from("someRoute")
 .setExchangePattern(ExchangePattern.InOnly)
 .doTry().processRef("processor")
  .inOnly("destinationQueue")
 .doCatch(Exception.class)
  .to("errorQueue");
处理器填充jaxb类并将其设置为body。我的处理器代码是这样的

JaxbClass message =  mapper.mapHL7ToXML(hl7Message);        
exchange.getIn().setBody(message) ;
我目前在pom for jaxb中使用它作为依赖项

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-jaxb</artifactId>
    <version>2.10.3</version>
</dependency>

org.apache.camel
骆驼jaxb
2.10.3

了解JMS及其支持的消息类型。由于您的java对象不可序列化,因此它不能使用它,然后回退到使用文本消息,您的对象在发送之前会转换为文本消息

您可以使用jmsMessageType选项告诉Camel您想要哪种JMS类型。

camel-jaxb中有一个类型转换器,可以将jaxb注释为XML的java对象转换为XML,从而转换用例中发生的事情