問題の説明: camel サーブレットから cxfbean へのルーティングに失敗しています。ルートの初期化が失敗し、次のエラー メッセージが表示されます。
"Failed to create route route1 at: >>> To[cxfbean:fooEndpoint] <<< in route:
Route[[From[servlet:///?servletName=BwsServlet]] -> [To[cxfb... because of Failed to resolve
endpoint: cxfbean://fooEndpoint due to: null".
サーブレットは、cxfbean がなくても正常に起動します。
更新: Camel Cxf Beanではなく、 Camel Cxf Bean コンポーネントを使用するつもりであることに注意してください。
達成したいこと: Tomcat 内でキャメル サーブレットを実行しています。Web サービス インターフェイス (CXF によって WSDL から生成) を実装する Bean があります。この Web サービス Bean に渡す前に、XML メッセージ本文を処理したいと考えています。cxf エンドポイント Bean ではなく、cxf Bean コンポーネントを使用したいと考えています。これは、既に実行されているキャメル サーブレットに加えて、ネットワーク ポートで cxf エンドポイントをリッスンしたくないためです。
私のコードはどのように見えるか: 私の camel-config.xml は次のようになります:
<bean id="bwsRouteBuilder" class="local.com.foo.BwsRouteBuilder"/>
<bean id="fooEndpoint" class="local.com.foo.FooBws"/>
<camel:camelContext id="bws">
<camel:routeBuilder ref="bwsRouteBuilder"/>
</camel:camelContext>
私のルート ビルダー (Java DSL で記述) は次のようになります。
public void configure() throws Exception {
from("servlet:///?servletName=BwsServlet")
// some processing of message here
.to("cxfbean:fooEndpoint");
}
更新:ここで定義されている上記のコードの cxfbean URI 形式に注意してください。
私の web.xml は次のようになります。
<servlet>
<servlet-name>BwsServlet</servlet-name>
<servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>BwsServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
camel-cxf は、私の pom.xml に依存関係として含まれています。
これまでのところ、ヘルプを求めて調べた場所: Apache Camel cxfbean の説明のドキュメントに従っており、stackoverflow に従っていました。私の質問が答えるのが簡単ではないことを願っています.Camelは初めてです。
ご意見をお寄せいただきありがとうございます