リモートホストから連絡先を取得する簡単なルートを作成しました。しかし、bridgeEndpointオプションには多くの混乱があるようです。Apache-camel:httpエンドポイントでbridgeEndpointを有効にする
は当初、私は次のようにJavaのDSLを使用してルートを追加しました:
from("direct:getContact")
.marshal().json(JsonLibrary.Jackson)
.setHeader("Content-Type", constant("application/json"))
.setHeader("Accept", constant("application/json"))
.setHeader(Exchange.HTTP_METHOD, constant("GET"))
.recipientList(simple("http://<remoteHost>:8080/api/contact" +
"/${header.contactId}"))
.unmarshal().json(JsonLibrary.Jackson);
このルートは、リモートホストのGET接触APIのためだけのプロキシです。 私は、次のエラーを得た:
Invalid uri: /ib/contact/51702/contact/51702. If you are forwarding/bridging http endpoints, then enable the bridgeEndpoint option on the endpoint: Endpoint[http://<remoteHost>:8080/api/contact/51702]
/IB/*あなたが見るには、TomcatサーブレットのベースURLです。エラーで示唆したように、以下に示すように、私はエンドポイントに真bridgeEndpoint =を追加しました:
from("direct:getContact")
.marshal().json(JsonLibrary.Jackson)
.setHeader("Content-Type", constant("application/json"))
.setHeader("Accept", constant("application/json"))
.setHeader(Exchange.HTTP_METHOD, constant("GET"))
.recipientList(simple("http://<remoteHost>:8080/api/contact" +
"/${header.contactId}?bridgeEndpoint=true"))
.unmarshal().json(JsonLibrary.Jackson);
をその後、私は別のエラーが表示されます。
org.apache.camel.component.http.HttpOperationFailedException:
HTTP operation failed invoking
http://<remoteHost>:8080/api/contact/51702/contact/51702 with statusCode: 404
at org.apache.camel.component.http.HttpProducer.populateHttpOperationFailedException(HttpProducer.java:233)
at org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:158)
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:448)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
at org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:652)
at org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:580)
at org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:227)
at org.apache.camel.processor.RecipientList.sendToRecipientList(RecipientList.java:167)
at org.apache.camel.processor.RecipientList.process(RecipientList.java:120)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
それはまだ「接触/ 51702」を付加しています404を提供しているリモートホストのURLに移動します。 私はここで何が欠けていますか? FAQ
In camel there are a number of components that use the http protocol headers to do their business.
から
ありがとう、これは動作します。 FAQを読んで、すべてのhttpヘッダー.removeHeaders( "CamelHttp *")を削除しました。それから、bridgeEndpointを有効にする必要はないことが分かりました。 .recipientList( "http://:8080/api/contact" + "/${header.contactId}"))はうまく動作します。 –
ndsurendra