Problem with HTTP inbound -> HTTP outbound bridging
thomas.letsch Feb 16, 2010 4:35 AMI want to bridge a HTTP POST request with an XML content to an HTTP endpoint with the same request body. The headers are not relevant for me.
The problem is, that the outbound HTTP request is malformed, the former body content is no longer a HTTP content, but is sent as header (missing CTLF seperator between the real header and the content).
Any ideas why this happens?
Thanks,
Thomas
This is my configuration (beans.xml):
The logfile shows the wrong HTTP request:
heckpoint Worker | MessageDatabase | emq.store.kahadb.MessageDatabase 959 | Checkpoint started.
heckpoint Worker | MessageDatabase | emq.store.kahadb.MessageDatabase 1045 | Checkpoint done.
l Console Thread | ServiceRecipe | lueprint.container.ServiceRecipe 225 | Retrieving service for bundle org.apache.felix.gogo.runtime_0.2.2 and service registration {org.apache.felix.karaf.shell.console.CompletableFunction, org.osgi.service.command.Function}={osgi.command.function=set, osgi.command.scope=log, service.id=64}
l Console Thread | BlueprintContainerImpl | container.BlueprintContainerImpl 680 | Instantiating component shell-11
l Console Thread | BlueprintContainerImpl | container.BlueprintContainerImpl 680 | Instantiating component blueprintBundleContext
l Console Thread | configadmin | ? ? | Scheduling task Update: pid=org.ops4j.pax.logging
guration Updater | configadmin | ? ? | Running task Update: pid=org.ops4j.pax.logging
guration Updater | configadmin | ? ? | Scheduling task Fire ConfigurationEvent: pid=org.ops4j.pax.logging
guration Updater | configadmin | ? ? | Running task Fire ConfigurationEvent: pid=org.ops4j.pax.logging
heckpoint Worker | MessageDatabase | emq.store.kahadb.MessageDatabase 959 | Checkpoint started.
heckpoint Worker | MessageDatabase | emq.store.kahadb.MessageDatabase 1045 | Checkpoint done.
- /sepa/request | jetty | .service.internal.util.JCLLogger 85 | REQUEST /sepa/request on org.mortbay.jetty.HttpConnection@346064
- /sepa/request | jetty | .service.internal.util.JCLLogger 85 | servlet=org.apache.camel.component.http.CamelServlet-27788977
- /sepa/request | jetty | .service.internal.util.JCLLogger 85 | chain=null
- /sepa/request | jetty | .service.internal.util.JCLLogger 85 | servlet holder=org.apache.camel.component.http.CamelServlet-27788977
- /sepa/request | HttpProducer | amel.component.http.HttpProducer 76 | Executing http POST method: http://localhost:7011/sepa/request/
- /sepa/request | ltiThreadedHttpConnectionManager | ltiThreadedHttpConnectionManager 412 | HttpConnectionManager.getConnection: config = HostConfiguration[host=http://localhost:7011], timeout = 0
- /sepa/request | ltiThreadedHttpConnectionManager | ConnectionManager$ConnectionPool 839 | Getting free connection, hostConfig=HostConfiguration[host=http://localhost:7011]
- /sepa/request | HttpConnection | ommons.httpclient.HttpConnection 692 | Open connection to localhost:7011
- /sepa/request | header | g.apache.commons.httpclient.Wire 70 | >> "POST /sepa/request/ HTTP/1.1[\r][\n]"
- /sepa/request | HttpMethodBase | ommons.httpclient.HttpMethodBase 1352 | Adding Host request header
- /sepa/request | header | g.apache.commons.httpclient.Wire 70 | >> "connection: close[\r][\n]"
- /sepa/request | header | g.apache.commons.httpclient.Wire 70 | >> "user-agent: Jakarta Commons-HttpClient/3.1[\r][\n]"
- /sepa/request | header | g.apache.commons.httpclient.Wire 70 | >> " "[\r][\n]"
- /sepa/request | EntityEnclosingMethod | nt.methods.EntityEnclosingMethod 508 | Request body sent
- /sepa/request | header | g.apache.commons.httpclient.Wire 70 | << "HTTP/1.1 400 Bad Request[\r][\n]"
- /sepa/request | header | g.apache.commons.httpclient.Wire 70 | << "HTTP/1.1 400 Bad Request[\r][\n]"
- /sepa/request | header | g.apache.commons.httpclient.Wire 70 | << "Connection: close[\r][\n]"
- /sepa/request | header | g.apache.commons.httpclient.Wire 70 | << "Server: Jetty(7.0.1.v20091125)[\r][\n]"
- /sepa/request | header | g.apache.commons.httpclient.Wire 70 | << "[\r][\n]"
- /sepa/request | HttpProducer | amel.component.http.HttpProducer 80 | Http responseCode: 400
- /sepa/request | HttpMethodBase | ommons.httpclient.HttpMethodBase 1008 | Should close connection in response to directive: close
- /sepa/request | HttpConnection | ommons.httpclient.HttpConnection 1178 | Releasing connection back to connection manager.
- /sepa/request | ltiThreadedHttpConnectionManager | ConnectionManager$ConnectionPool 979 | Freeing connection, hostConfig=HostConfiguration[host=http://localhost:7011]
- /sepa/request | IdleConnectionHandler | lient.util.IdleConnectionHandler 76 | Adding connection at: 1266310944788
- /sepa/request | ltiThreadedHttpConnectionManager | ConnectionManager$ConnectionPool 961 | Notifying no-one, there are no waiting threads
- /sepa/request | DefaultErrorHandler | rg.apache.camel.processor.Logger 197 | Failed delivery for exchangeId: 275504e1-ce1d-41b6-82e9-d5a35426e2f4. On delivery attempt: 0 caught: org.apache.camel.component.http.HttpOperationFailedException: HTTP operation failed invoking http://localhost:7011/sepa/request/ with statusCode: 400
- /sepa/request | DefaultErrorHandler | processor.RedeliveryErrorHandler 411 | This exchange is not handled so its marked as failed: Exchange[Message: ]
- /sepa/request | Pipeline | .apache.camel.processor.Pipeline 99 | Message exchange has failed so breaking out of pipeline: Exchange[Message: ] Exception: org.apache.camel.component.http.HttpOperationFailedException: HTTP operation failed invoking http://localhost:7011/sepa/request/ with statusCode: 400
- /sepa/request | jetty | .service.internal.util.JCLLogger 85 | RESPONSE /sepa/request 500