Dear Camel Developer I has found the bug in camel-http component.
At first I posted the mail of the title, "what is the difference between requestBodyAndHeader and sendBodyAndHeader method ?" and some other mails. I tried to know what happened in the camel for myself. and I had found the hang at the third http request call after the second http request call. Namely, the third http request call always hanged in all camel http request method (template.sendBody, template.requestBody ...) So, I has found the camel http component source skipped the http connection release call documented at the http client threading docuemnt http://hc.apache.org/httpclient-3.x/threading.html http://hc.apache.org/httpclient-3.x/threading.html that is why the third http request hangs. The http client connection pool has the default connections 2. Maybe org.apache.camel.component.http.HttpPollingConsumer.java and org.apache.camel.component.http.HttpProducer.java must be included http client connection release method call after httpClient.executeMethod(method); I upload my patched source. http://www.nabble.com/file/p17511201/HttpPollingConsumer.java HttpPollingConsumer.java and http://www.nabble.com/file/p17511201/HttpProducer.java HttpProducer.java Would you check the camel-http componet source and patch it. The below source is my test source. ================================================== import org.apache.camel.CamelContext; import org.apache.camel.CamelTemplate; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.impl.DefaultExchange; public class JettyRequestTest { public static void main(String[] args) throws Exception { JettyRequestTest client = new JettyRequestTest(); client.testJettyRequest(); } public void testJettyRequest() throws Exception { try { CamelContext ctx = new DefaultCamelContext(); RouteBuilder builder = new ServerRoutes(); ctx.addRoutes(builder); ctx.start(); CamelTemplate<DefaultExchange> template = new CamelTemplate<DefaultExchange>(ctx); String body = "<hello>world!</hello>"; template.requestBody("direct:start", body); // ok template.requestBody("direct:start", body); // ok template.requestBody("direct:start", body); // --> hang ctx.stop(); } catch (Throwable e) { e.printStackTrace(); } } } class ServerRoutes extends RouteBuilder { @Override public void configure() throws Exception { // 본문 수신 및 응답 Processor proc = new Processor() { public void process(Exchange exchange) throws Exception { String request = exchange.getIn().getBody(String.class); exchange.getOut(true).setBody(request + " >> processed"); } }; from("jetty:http://localhost:8080/hello").process(proc); from("direct:start").to("http://localhost:8080/hello"); } } ================================================== Thanks a lot J. H. Cha -- View this message in context: http://www.nabble.com/Bug-at-the-camel-http-component-tp17511201s22882p17511201.html Sent from the Camel - Users mailing list archive at Nabble.com.
