【问题标题】:jboss fuse split List propertyjboss fuse split List 属性
【发布时间】: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


    【解决方案1】:

    这个方法返回的就是用来分裂的东西

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

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

    【讨论】:

    • 非常感谢,我已经修改了代码以从正文中获取 List 属性,但仍然无法正常工作。请检查修改后的代码。
    • 由于 camel-cxf 将调用参数放入列表中,因此您需要像这样取第一个参数。 ${body[0]}
    猜你喜欢
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多