4

問題の説明: 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は初めてです。

ご意見をお寄せいただきありがとうございます

4

1 に答える 1

-1

cxf Bean を使用する場合は、ルートに「cxf:bean:fooEndpoint」と記述する必要があります (cxf と bean の間の : を忘れています)。

public void configure() throws Exception {
    from("servlet:///?servletName=BwsServlet")
    // some processing of message here
    .to("cxf:bean:fooEndpoint");
}
于 2012-08-28T05:59:02.040 に答える