Dear Gert Vanthienen.
Thank you for replying so quickly!
I tested your sugestion, I modified the blow part of my test source.
// from("direct:http://localhost:8080/hello").process(proc);
// from("direct:start").to("http://localhost:8080/hello");
from("direct:test").process(proc);
from("direct:start").to("direct:test");
The result was ok! hanging did not happend !!!
so..
then maybe that http endpoint and the jetty end point have some problems but
I don't know..
I use the camel 1.3.0 in eclipse 3.3.2, jdk 1.5.0_14, and windows xp sp3.
I used the below jars and camel-core, camel-jetty imported from camel 1.3.0
source with "maven eclipse:eclipse" in my eclipse.
Coud you find the reason ?
Thanks a lot.
J. H. Cha
==============================================================================
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/log4j"/>
<classpathentry kind="src" path="src"/>
<classpathentry combineaccessrules="false" kind="src"
path="/camel-core"/>
<classpathentry kind="lib"
path="D:/tools/camel/apache-camel-1.3.0/lib/camel-xmlbeans-1.3.0.jar"/>
<classpathentry kind="var"
path="M2_REPO/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar"/>
<classpathentry kind="var"
path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"
sourcepath="M2_REPO/javax/activation/activation/1.1/activation-1.1-sources.jar"/>
<classpathentry kind="var"
path="M2_REPO/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.1/geronimo-jms_1.1_spec-1.1.jar"/>
<classpathentry kind="var"
path="M2_REPO/org/apache/camel/camel-spring/1.3.0/camel-spring-1.3.0.jar"/>
<classpathentry kind="var"
path="M2_REPO/org/apache/geronimo/specs/geronimo-j2ee-management_1.0_spec/1.1/geronimo-j2ee-management_1.0_spec-1.1.jar"/>
<classpathentry kind="var"
path="M2_REPO/org/springframework/spring/2.5.1/spring-2.5.1.jar"/>
<classpathentry kind="var"
path="M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.3/jaxb-impl-2.1.3.jar"/>
<classpathentry kind="var"
path="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar"/>
<classpathentry kind="var"
path="M2_REPO/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar"/>
<classpathentry kind="var"
path="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar"/>
<classpathentry kind="lib"
path="D:/tools/commons/commons-pool-1.3/commons-pool-1.3.jar"/>
<classpathentry kind="lib" path="lib/jta.jar"/>
<classpathentry kind="lib"
path="D:/tools/jetty/jetty-6.1.5/lib/servlet-api-2.5-6.1.5.jar"/>
<classpathentry combineaccessrules="false" kind="src"
path="/camel-jetty"/>
<classpathentry kind="lib"
path="D:/tools/camel/apache-camel-1.3.0/lib/camel-http-1.3.0.jar"/>
<classpathentry kind="lib" path="C:/Documents and
Settings/cha/.m2/repository/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Gert Vanthienen wrote:
>
> J.H.Cha,
>
> The only difference I see when I look at the code, it the message
> ExchangePattern. requestBodyAndHeader() explicitly sets the pattern to
> InOut, while the sendBodyAndHeader() just leaves the default (InOnly).
> Not sure why this causes a problem in your case though, I would even
> think that InOut would be a more correct representation...
>
> I would guess that the InOut pattern causes the http: endpoint to wait
> on a reply from the jetty: endpoint, but I'm not sure why that doesn't
> happen. What version of Camel are you using? To determine what's going
> on here, could you try replacing your http/jetty endpoints with a
> direct:b or something?
>
> Regards,
>
> Gert
>
>
> jhcha wrote:
>> When I tested two methods requestBodyAndHeader and sendBodyAndHeader in
>> my
>> test source,
>> I found the very curious result.
>>
>> sendBodyAndHeader returns ok, but requestBodyAndHeader does not return,
>> and
>> hangs...
>>
>> two methods have the same(?) input parameters and very similar comments..
>> (Is it different things, endpoint and endpointUri ? )
>>
>> Object requestBodyAndHeader(String endpoint, Object body, String header,
>> Object headerValue)
>> Send the body to an endpoint returning any result output body
>>
>> Object sendBodyAndHeader(String endpointUri, Object body, String header,
>> Object headerValue)
>> Sends the body to an endpoint with a specified header and
>> header
>> value
>>
>> Maybe I should not use requestBodyAndHeader with "direct" end point.
>>
>> but I need to know the accurate reason for that.
>>
>> Would you explain me what is the difference of the two methods,
>> and the correct usage case ?
>>
>> Thank you.
>>
>> J. H. Cha
>>
>> the below source is my test code.
>> =============================
>>
>>
>> import org.apache.camel.CamelContext;
>> import org.apache.camel.CamelTemplate;
>> import org.apache.camel.Endpoint;
>> 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;
>> import org.apache.camel.util.ExchangeHelper;
>> import org.apache.log4j.Logger;
>>
>> public class JettyRequestTest extends Thread {
>>
>> private static final Logger logger =
>> Logger.getLogger(JettyRequestTest.class);
>>
>> private static int threads = 1;
>>
>>
>> public static void main(String[] args) throws Exception {
>>
>> for (int i = 0; i < threads; i++) {
>> JettyRequestTest client = new JettyRequestTest();
>> client.start();
>> }
>> }
>>
>> @Override
>> public void run() {
>> try {
>> testJettyConsumerEndpoint();
>> } catch (Exception e) {
>> logger.fatal("testJmsSpeed fail", e);
>> }
>> }
>>
>> public void testJettyConsumerEndpoint() 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>";
>>
>> Object result =
>> template.sendBodyAndHeader("direct:start", body,
>> "Content-Type", "application/xml");
>> Exchange exchange = new DefaultExchange(ctx);
>> String response =
>> ExchangeHelper.convertToType(exchange, String.class,
>> result);
>> logger.info("response : [" + response + "]");
>>
>> // the below line meet hang !!!!
>>
>> template.requestBodyAndHeader("direct:start", body,
>> "Content-Type",
>> "application/xml");
>>
>>
>> ctx.stop();
>> } catch (Throwable e) {
>> if (logger.isEnabledFor(org.apache.log4j.Level.ERROR)) {
>> logger.error("testJettyConsumerEndpoint()", 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");
>> }
>> }
>>
>>
>
>
>
> -----
> ---
> Gert Vanthienen
> http://www.anova.be
>
--
View this message in context:
http://www.nabble.com/what-is-the-difference-between-requestBodyAndHeader-and-sendBodyAndHeader-method---tp17335200s22882p17336225.html
Sent from the Camel - Users mailing list archive at Nabble.com.