【发布时间】:2014-04-05 10:08:10
【问题描述】:
我有一个代理,它以 RequestBean 作为参数,其中包含一个 list 属性,我需要使用拆分 EIP 拆分此列表属性。
我试过了
<split streaming="true">
<simple>${body}</simple>
<process ref="requestHeaderProcessor" />
</split>
我的完整路线是
<route id="httpBridge">
<from uri="cxf:bean:splitterOperation?dataFormat=POJO" />
<split streaming="true">
<simple>${body}</simple>
<bean ref="requestHeaderProcessor" method="process" />
</split>
<to uri="cxf:bean:realService" />
</route>
我的代理服务方法签名是
public List<ResponseBean> splitList(List<RequestContent> requestBean);
ResponseBean.java
ResponseBean {
private String name;
}
RequestBean.java
RequestBean {
private String list;
}
处理器没有单独接收RequestContent,我希望处理器单独接收RequestContent。
尝试打印以下行和
System.out.println(exchange.getIn().getBody().getClass().getName());
得到java.util.ArrayList。所以它是 100% 可迭代的。
但是,当我打印
System.out.println(exchange.getIn().getBody());
我来了
[webservice.RequestContent@10128f3, webservice.RequestContent@1277137]
这是所有RequestContent 的列表。
但是,为什么我在 bean 中看到列表,根据拆分定义,Exchange 必须只包含一个 RequestContent(因为它是按顺序处理的)。
我在哪里犯错了。或者这是它的工作方式。如何确保它拆分内容?
如何做到这一点?
【问题讨论】:
标签: apache-camel fuseesb jbossfuse