Apache camel CamelExchangeException:JettyClient失败原因:负初始大小:

Apache camel CamelExchangeException:JettyClient失败原因:负初始大小:,apache-camel,apache-karaf,Apache Camel,Apache Karaf,使用骆驼2.8.0 使用码头7.5.4 from("jetty://http://myESBserver/large/resource?matchOnUriPrefix=true&bridgeEndpoint=true&enableMultipartFilter=false&disableStreamCache=true&continuationTimeout=1440000") .to("jetty://http://myWEBserver/large/re

使用骆驼2.8.0
使用码头7.5.4

from("jetty://http://myESBserver/large/resource?matchOnUriPrefix=true&bridgeEndpoint=true&enableMultipartFilter=false&disableStreamCache=true&continuationTimeout=1440000")  
.to("jetty://http://myWEBserver/large/resource?bridgeEndpoint=true&throwExceptionOnFailure=false");
这条路线使用较小的资源。我要求Camel代理请求而不进行修改(在交换完成后进行日志记录)。我试图代理的文档相当大(约7G)

卡拉夫原木:

16:11:15,201 | ERROR | qtp59894565-976  | DefaultErrorHandler              | ?                                   ? | 56 - org.apache.camel.camel-core - 2.8.0 | Failed delivery for exchangeId: ID------46702-1385393650256-95-3. Exhausted after delivery attempt: 1 caught:         org.apache.camel.CamelExchangeException: JettyClient failed cause by: Negative initial size: -1034012518. Exchange[Message: [Body is null]]. Caused by: [java.lang.IllegalArgumentException - Negative initial size: -1034012518]
org.apache.camel.CamelExchangeException: JettyClient failed cause by: Negative initial size: -1034012518. Exchange[Message: [Body is null]]. Caused by: [java.lang.IllegalArgumentException - Negative initial size: -1034012518]
    at org.apache.camel.component.jetty.JettyContentExchange.doTaskCompleted(JettyContentExchange.java:205)[86:org.apache.camel.camel-jetty:2.8.0]
    at org.apache.camel.component.jetty.JettyContentExchange.onException(JettyContentExchange.java:135)[86:org.apache.camel.camel-jetty:2.8.0]
    at org.eclipse.jetty.client.HttpExchange$Listener.onException(HttpExchange.java:1094)[72:org.eclipse.jetty.client:7.5.4.v20111024]
    at org.eclipse.jetty.client.HttpConnection.handle(HttpConnection.java:319)[72:org.eclipse.jetty.client:7.5.4.v20111024]
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)[69:org.eclipse.jetty.io:7.5.4.v20111024]
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)[69:org.eclipse.jetty.io:7.5.4.v20111024]
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)[77:org.eclipse.jetty.util:7.5.4.v20111024]
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)[77:org.eclipse.jetty.util:7.5.4.v20111024]
    at java.lang.Thread.run(Thread.java:662)[:1.6.0_31]
Caused by: java.lang.IllegalArgumentException: Negative initial size: -1034012518
    at java.io.ByteArrayOutputStream.<init>(ByteArrayOutputStream.java:57)[:1.6.0_31]
    at org.eclipse.jetty.client.ContentExchange.onResponseContent(ContentExchange.java:99)[72:org.eclipse.jetty.client:7.5.4.v20111024]
    at org.eclipse.jetty.client.HttpExchange$Listener.onResponseContent(HttpExchange.java:1163)[72:org.eclipse.jetty.client:7.5.4.v20111024]
    at org.eclipse.jetty.client.HttpConnection$Handler.content(HttpConnection.java:657)[72:org.eclipse.jetty.client:7.5.4.v20111024]
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:801)[74:org.eclipse.jetty.http:7.5.4.v20111024]
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:224)[74:org.eclipse.jetty.http:7.5.4.v20111024]
    at org.eclipse.jetty.client.HttpConnection.handle(HttpConnection.java:279)[72:org.eclipse.jetty.client:7.5.4.v20111024]
    ... 5 more
16:11:15201 |错误| qtp59894565-976 | DefaultErrorHandler |56-org.apache.camel.camel-core-2.8.0 | exchangeId的传递失败------46702-1385393650256-95-3。交付尝试后耗尽:1捕获:org.apache.camel.cameleException:JettyClient失败原因:负初始大小:-1034012518。Exchange[邮件:[正文为空]]。原因:[java.lang.IllegalArgumentException-负初始大小:-1034012518]
org.apache.camel.camelException:JettyClient失败原因:负初始大小:-1034012518。Exchange[邮件:[正文为空]]。原因:[java.lang.IllegalArgumentException-负初始大小:-1034012518]
位于org.apache.camel.component.jetty.JettyContentExchange.doTaskCompleted(JettyContentExchange.java:205)[86:org.apache.camel.camel jetty:2.8.0]
位于org.apache.camel.component.jetty.JettyContentExchange.onException(JettyContentExchange.java:135)[86:org.apache.camel.camel-jetty:2.8.0]
在org.eclipse.jetty.client.HttpExchange$Listener.onException(HttpExchange.java:1094)[72:org.eclipse.jetty.client:7.5.4.v20111024]
在org.eclipse.jetty.client.HttpConnection.handle(HttpConnection.java:319)[72:org.eclipse.jetty.client:7.5.4.v20111024]
在org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)[69:org.eclipse.jetty.io:7.5.4.v20111024]
在org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)[69:org.eclipse.jetty.io:7.5.4.v20111024]
位于org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)[77:org.eclipse.jetty.util:7.5.4.v20111024]
位于org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)[77:org.eclipse.jetty.util:7.5.4.v20111024]
在java.lang.Thread.run(Thread.java:662)[:1.6.0_31]
原因:java.lang.IllegalArgumentException:负初始大小:-1034012518
在java.io.ByteArrayOutputStream.(ByteArrayOutputStream.java:57)[:1.6.031]
在org.eclipse.jetty.client.ContentExchange.onResponseContent(ContentExchange.java:99)[72:org.eclipse.jetty.client:7.5.4.v20111024]
在org.eclipse.jetty.client.HttpExchange$Listener.onResponseContent(HttpExchange.java:1163)[72:org.eclipse.jetty.client:7.5.4.v20111024]
在org.eclipse.jetty.client.HttpConnection$Handler.content(HttpConnection.java:657)[72:org.eclipse.jetty.client:7.5.4.v20111024]
http.HttpParser.parseNext(HttpParser.java:801)[74:org.eclipse.jetty.http:7.5.4.v20111024]
在org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:224)[74:org.eclipse.jetty.http:7.5.4.v20111024]
在org.eclipse.jetty.client.HttpConnection.handle(HttpConnection.java:279)[72:org.eclipse.jetty.client:7.5.4.v20111024]
... 还有5个

该代码在内部使用
ByteArrayOutputStream
,其最大大小限制为
整数。最大值约为2GB

在此之前还有另一个bug,long以某种方式被向下转换为整数,但是
ByteArrayOutputStream
似乎是根本问题


因此,您似乎必须将数据拆分为单独的数据块或使用不同的方法。

您是说Camel会坚持在将整个响应传递给客户端之前将其读取到内存中?我不知道-我只是通过查看堆栈跟踪推断出这一点。