Apache Camel:CXF - 返回Holder值(错误:IndexOutOfBoundsException:Index:1,Size:1)

时间:2016-01-10 19:27:22

标签: apache-camel cxf

我在输出消息中设置持有人时遇到问题。 我有以下简单的路由和处理器:

from("cxf:bean:ewidencjaEndpoint")
    .process(new ProcessResult())
    .end();

public class ProcessResult implements Processor {

    public void process(Exchange exchange) throws Exception {

        Object[] args =  exchange.getIn().getBody(Object[].class);

        long id = (long) args[0];
        Holder<A> dataA = (Holder<A>) args[1];
        Holder<B> dataB = (Holder<B>) args[2];

        exchange.getOut().setBody(new Object[]{ dataA, dataB});

}

我收到以下错误:

java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at org.apache.cxf.jaxws.interceptors.HolderInInterceptor.handleMessage(HolderInInterceptor.java:67)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:737)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2335)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:2198)

我已经阅读了网上描述的许多类似问题(例如:http://camel.465427.n5.nabble.com/java-lang-IndexOutOfBoundsException-in-cxf-producer-td468541.html),但没有成功解决问题。

在调试中,我得到输出消息,如:

Exchange[Message[null,null, A@xxxm B@yyy]]

我不明白什么是愚蠢的&#34; null&#34;价值来自。 根据wsdl文件(和生成的界面),我只有2个输出值(在Holders中)。我也在调试控制台中看到了&#39; out&#39;交换体的一部分我只在ProcessResult()中设置了2个值(从2到3中设置),以及&#39; out&#39;的大小值。部分设置为&#39; 4&#39; (不是2)?

0 个答案:

没有答案