2 回答
TA贡献1848条经验 获得超10个赞
当您开发 custom 时transformer
,您需要记住,返回 aMessage<?>
会让您完全控制其内容。
当转换器函数返回 a 时Message
,它不会填充任何请求标头。
因此,您public Message transform(String message) {
必须期望 aMessage
作为输入,并且需要将请求消息中的所有标头复制到回复消息。上有相应的方法MessageBuilder
。
另一方面,完全不清楚为什么需要Message
在此处返回 a ,因为 Spring Integration 中的所有内容都将Message
在发送到输出通道之前被包装。
TA贡献1777条经验 获得超3个赞
采取:
ClassCastException 后来在最后一个路由器中发生,是因为我命名了自定义 header contentType
。这是内部使用的默认 jms 标头。当我将其值更改为 时text/xml
,最后一个路由器String route(Message<MyModel> myModel)
尝试将 json 转换为 MyModel,但它失败了,因为标头不再像application/json
应有的那样,而是text/xml
。这导致了 ClassCastException。
所以我摆脱了自定义 xml 解组逻辑 bean。我重命名了自定义标题。并用过<ixml:unmarshalling-transformer ../>
。
它使用 xml 配置工作,无需额外的自定义 java bean。
添加回答
举报