"java.lang.IllegalStateException - SENDING => HEADERS" when sending an empty HTTP Post to camel-jetty route
Issue
Trying to send an empty HTTP POST message with no message body to a Camel route that runs a jetty consumer results in "java.lang.IllegalStateException - SENDING => HEADERS" [2]. The empty HTTP Message would look similar to [3] and does not contain a message body.
If the same HTTP POST message contains a message body, no error is raised.
The route runs as a HTTP proxy as documented in [1].
<route>
<from uri="jetty:http://0.0.0.0:8080/myapp?matchOnUriPrefix=true"/>
<to uri="jetty:http://realserverhostname:8090/myapp?bridgeEndpoint=true&throwExceptionOnFailure=false"/>
</route>
[1] http://camel.apache.org/how-to-use-camel-as-a-http-proxy-between-a-client-and-server.html
[2]
13:08:14,978 | ERROR | HttpClient-404 | DefaultErrorHandler | 130 - org.apache.camel.camel-core - 2.10.0.redhat-60024 |
Failed delivery for (MessageId: ID-mac-fritz-box-58335-1416744432175-1-11 on
ExchangeId: ID-mac-fritz-box-58335-1416744432175-1-10).
Exhausted after delivery attempt: 1 caught: org.apache.camel.CamelExchangeException:
JettyClient failed cause by: SENDING => HEADERS. Exchange[Message:
[Body is instance of org.apache.camel.StreamCache]].
Caused by: [java.lang.IllegalStateException - SENDING => HEADERS]
org.apache.camel.CamelExchangeException: JettyClient failed cause by: SENDING => HEADERS. Exchange[Message: [Body is instance of org.apache.camel.StreamCache]]. Caused by: [java.lang.IllegalStateException - SENDING => HEADERS]
at org.apache.camel.component.jetty.JettyContentExchange.doTaskCompleted(JettyContentExchange.java:214)[223:org.apache.camel.camel-jetty:2.10.0.redhat-60024]
at org.apache.camel.component.jetty.JettyContentExchange.onException(JettyContentExchange.java:134)[223:org.apache.camel.camel-jetty:2.10.0.redhat-60024]
at org.eclipse.jetty.client.HttpExchange$Listener.onException(HttpExchange.java:1108)[83:org.eclipse.jetty.client:7.6.7.v20120910]
at org.eclipse.jetty.client.AsyncHttpConnection.handle(AsyncHttpConnection.java:166)[83:org.eclipse.jetty.client:7.6.7.v20120910]
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:627)[81:org.eclipse.jetty.io:7.6.7.v20120910]
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:51)[81:org.eclipse.jetty.io:7.6.7.v20120910]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)[90:org.eclipse.jetty.util:7.6.7.v20120910]
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)[90:org.eclipse.jetty.util:7.6.7.v20120910]
at java.lang.Thread.run(Thread.java:744)[:1.7.0_45]
Caused by: java.lang.IllegalStateException: SENDING => HEADERS
at org.eclipse.jetty.client.HttpExchange.setStatus(HttpExchange.java:370)[83:org.eclipse.jetty.client:7.6.7.v20120910]
at org.eclipse.jetty.client.AbstractHttpConnection$Handler.startResponse(AbstractHttpConnection.java:298)[83:org.eclipse.jetty.client:7.6.7.v20120910]
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:485)[79:org.eclipse.jetty.http:7.6.7.v20120910]
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)[79:org.eclipse.jetty.http:7.6.7.v20120910]
at org.eclipse.jetty.client.AsyncHttpConnection.handle(AsyncHttpConnection.java:133)[83:org.eclipse.jetty.client:7.6.7.v20120910]
[3]
POST http://0.0.0.0:8080/myApp HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Host: 0.0.0.0:9000
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Environment
- JBoss Fuse 6.0
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.