我在输出消息中设置持有人时遇到问题。 我有以下简单的路由和处理器:
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)?