我收到一条发送到 CXF 端点的 SOAP 消息,其中包含 Long 和 String 值。 例如。 [5、'测试']
接收消息的camel路由已经使用dataformat=POJO 我需要将 ActiveMQ 上的这些参数发送到另一个应用程序。
如果我使用:
<convertBodyTo type="java.lang.String"/>
日志显示正文仅包含 5 个。未发送“测试”。
我尝试在转换为字符串之前转换为 POJO,但我找不到有关制作 TypeConverters 的正确文档(说真的,谁能阅读 this 并从中找出实际代码?)
例如。
<convertBodyTo type="com.company.InfoPojo"/>
<convertBodyTo type="java.lang.String"/>
如果我尝试将 CXF 数据转发到队列而不进行任何转换,我会得到:
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: Forbidden class org.apache.cxf.message.MessageContentsList! This class is not allowed to be serialized. Add package with 'org.apache.activemq.SERIALIZABLE_PACKAGES' system property..
有人知道这里最好的选择是什么吗?
谢谢
最佳答案
在将参数发送到队列之前,您应该将它们编码为 XML 或 JSON(或您喜欢的任何其他格式)。然后,消费者需要对它们进行解码。
无需搞乱类型转换器。 Camel 的数据格式使这变得非常简单:https://github.com/apache/camel/blob/master/components/readme.adoc#data-formats
JSON:https://github.com/apache/camel/blob/master/docs/user-manual/en/json.adoc
JAXB:https://github.com/apache/camel/blob/master/components/camel-jaxb/src/main/docs/jaxb-dataformat.adoc
关于java - Camel序列化消息内容列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48900802/