我有一个代理,它接受一个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 中看到列表,RequestContent
根据拆分定义,Exchange 必须只包含一个(因为它是按顺序处理的)。
我在哪里犯错。或者这是它的工作方式。如何确保它拆分内容?
如何做到这一点?