【发布时间】:2015-11-02 18:04:07
【问题描述】:
在我的 RouteBuilder 中,我有这个:
JaxbDataFormat jaxb = new JaxbDataFormat();
jaxb.setContext(JAXBContext.newInstance(MyClass.class));
from("direct:start")
.unmarshal(jaxb)
.process(new MyProcessor())
.log(LoggingLevel.INFO, "test.Test", "${body}")
...
MyProcessor 只是这样做:
MyClass myClass = exchange.getIn().getBody(MyClass.class);
LOGGER.info("Converted to: {}", myClass );
好吧,当我的处理器中的 LOGGER 记录 myClass.toString() 时,路由中的日志组件记录原始 XML 消息体。现在我有点困惑。如果我在 MyProcessor 中设置断点,那么我可以看到 exchange.getIn().getBody(MyClass.class) 确实包含 MyClass 的实例。但是为什么之后日志组件中的 ${body} 仍然是 XML?
谢谢, 尼克
【问题讨论】:
-
查看此常见问题解答可能会有所帮助:camel.apache.org/why-is-my-message-body-empty.html
-
感谢克劳斯,但在我的路线中使用
streamCaching()并不会改变 ${body} 仍然是 XML 格式的行为。
标签: java jaxb apache-camel