我有这条骆驼路线:
<route id="externalRestPushRoute">
<from uri="jms:pushProcessedRecordsToExternal" />
<setHeader headerName="PAYLOAD">
<simple>body</simple>
</setHeader>
<marshal ref="jack"></marshal>
<to uri="http://localhost/front/rest/karec/dummy-push"/>
<transform>
<simple>in.header[PAYLOAD]</simple>
</transform>
<to uri="bean:noAuthRecordPersistenceService?method=deliverySuccess" />
</route>
这个想法是这样的: 我想以JSON格式将对象传递给REST端点(所有头文件都已正确设置,其余端点接收json格式)/ 要将对象转换为JSON格式,我使用marshal并且它可以工作。 现在,从http端点返回的响应是java.io.InputStream类型,但我不在乎。 我关心的是在编组之前将身体转换回原始物体。 在编组名为PAYLOAD的标题之前,我确实将对象保存在标题中。 现在我想使用transform将其恢复到消息正文中。 嗯,这似乎不起作用。当它到达最后一个bean时,它会抱怨body仍然是java.io.InputStream类型。
答案 0 :(得分:1)
将正文存储在交换属性而不是标题上,这样更安全。
<setProperty propertyName="PAYLOAD">
<simple>body</simple>
</setProperty>
<transform>
<simple>${property.PAYLOAD}</simple>
</transform>