0

我有一个代理,它接受一个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 必须只包含一个(因为它是按顺序处理的)。

我在哪里犯错。或者这是它的工作方式。如何确保它拆分内容?

如何做到这一点?

4

1 回答 1

0

无论此方法返回什么,都用于拆分

 <simple>${body.requestBean.requestContent}</simple>

所以请确保它是一个列表或数组,或者可以迭代

于 2014-04-05T10:44:15.163 回答