I'm doing an HTTP forward in a Camel Processor and getting a Stream closed
error as shown in the stack trace below. This used to work when using Camel
2.13.2, but it is no longer working now we're running Camel 2.17.1. I've
also tried 2.17.6 and 2.18.3 with the same result. The stack trace below is
when using 2.18.3.

The application runs on Tomcat 8.0.30, JDK 8.

Route configuration:
        from("servlet:///?matchOnUriPrefix=true")
        .to("restInboundRequestTransformer")   // This is the Processor that
is performing the forward.
        ...

Forwarding:
        httpReq.getRequestDispatcher(requestURI).forward(httpReq, httpRsp);
        ex.setProperty(Exchange.ROUTE_STOP, Boolean.TRUE);

https://issues.apache.org/jira/browse/CAMEL-10425 is very similar, but
indicates it is fixed in Camel 2.18.1.

This seems like a bug in Camel, but I'd appreciate any advice on whether
there is a better way for forwarding an HTTP request than what I'm doing.

org.apache.camel.RuntimeCamelException: java.io.IOException: Stream closed
        at 
org.apache.camel.http.common.HttpMessage.createBody(HttpMessage.java:74)
        at org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:47)
        at
org.apache.camel.http.common.DefaultHttpBinding.readBody(DefaultHttpBinding.java:184)
        at
org.apache.camel.http.common.DefaultHttpBinding.readRequest(DefaultHttpBinding.java:107)
        at org.apache.camel.http.common.HttpMessage.<init>(HttpMessage.java:52)
        at
org.apache.camel.http.common.CamelServlet.doService(CamelServlet.java:169)
        at 
org.apache.camel.http.common.CamelServlet.service(CamelServlet.java:74)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:719)
        at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:465)
        at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:390)
        at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:317)
        at
com.mycompany.camel.processor.RestInboundRequestTransformer.process(RestInboundRequestTransformer.java:98)
        at
org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:103)
        at
org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:71)
        at
org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
        at 
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)
        at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
        at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:542)
        at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:120)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
        at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)
        at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)
        at
org.apache.camel.http.common.CamelServlet.doService(CamelServlet.java:195)
        at 
org.apache.camel.http.common.CamelServlet.service(CamelServlet.java:74)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
        at
org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:106)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
        at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
        at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
        at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
        at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Stream closed
        at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:372)
        at
org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:156)
        at org.apache.camel.util.IOHelper.copy(IOHelper.java:196)
        at org.apache.camel.util.IOHelper.copy(IOHelper.java:169)
        at org.apache.camel.util.IOHelper.copyAndCloseInput(IOHelper.java:218)
        at org.apache.camel.util.IOHelper.copyAndCloseInput(IOHelper.java:214)
        at
org.apache.camel.http.common.HttpHelper.readResponseBodyFromInputStream(HttpHelper.java:244)
        at
org.apache.camel.http.common.HttpHelper.readRequestBodyFromServletRequest(HttpHelper.java:195)
        at
org.apache.camel.http.common.DefaultHttpBinding.parseBody(DefaultHttpBinding.java:572)
        at 
org.apache.camel.http.common.HttpMessage.createBody(HttpMessage.java:72)
        ... 52 more






--
View this message in context: 
http://camel.465427.n5.nabble.com/IOException-Stream-closed-when-forwarding-HTTP-request-tp5796802.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to