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。
添加回答
举报
