gpt4 book ai didi

java - apache Camel 变量 ${body} 解码后未转换

转载 作者:行者123 更新时间:2023-12-02 04:14:18 25 4
gpt4 key购买 nike

在我的 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 );

好吧,当我的处理器中的记录器记录 myClass.toString() 时,路由中的日志组件记录原始 XML 消息正文。现在我有点困惑。如果我在 MyProcessor 中设置断点,那么我可以看到 Exchange.getIn().getBody(MyClass.class) 确实保存了 MyClass 的实例。但是为什么日志组件中的${body}还是XML呢?

谢谢,尼克

最佳答案

可能是因为您没有将交换器上的主体设置为您想要的任何内容。您只执行了“getBody”,因此原始 xml 仍然是交换器上的正文。

能否将其更改为以下内容:

MyClass myClass = exchange.getIn().getBody(MyClass.class);
LOGGER.info("Converted to: {}", myClass );
exchange.getIn().setBody(myClass.toString());

关于java - apache Camel 变量 ${body} 解码后未转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33472944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com