以下のコードでは、単にリクエストを Google にルーティングしてレスポンスを返すという奇妙な状況が発生しています。
うまく動作しますが、 「//この行をアクティブにするとブラウザーで空の応答が発生します」とコメントアウトされた行をアクティブにして 、http エンドポイント (Google) から返された応答を出力すると、応答が消え、ブラウザーに何も表示されません。一度しか消費できないhttp応答の入力ストリームに関係しているのではないかと思い、コンテキストでストリームキャッシングを有効にしましたが、何も変わりませんでした。
Apache Camel のバージョンは 2.11.0 です
事前に感謝します。
public class GoogleCaller {
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() {
from("jetty:http://0.0.0.0:8081/myapp/")
.to("jetty://http://www.google.com?bridgeEndpoint=true&throwExceptionOnFailure=false")
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
System.out.println("Response received from Google, is streamCaching = " + exchange.getContext().isStreamCaching());
System.out.println("----------------------------------------------IN MESSAGE--------------------------------------------------------------");
System.out.println(exchange.getIn().getBody(String.class));
System.out.println("----------------------------------------------OUT MESSAGE--------------------------------------------------------------");
//System.out.println(exchange.getOut().getBody(String.class)); //Activating this line causes empty response on browser
}
});
}
});
context.setTracing(true);
context.setStreamCaching(true);
context.start();
}
}