第30章 CXF Bean コンポーネント


CXF Bean コンポーネント(2.0 以降)

cxfbean: コンポーネントを使用すると、他の Camel エンドポイントがエクスチェンジを送信し、Web サービス Bean オブジェクトを呼び出すことができます。現在、JAXRS および JAXWS (Camel 2.1 の新機能)アノテーション付きサービス Bean のみをサポートしています。
重要
CxfBeanEndpointProcessorEndpoint であるため、コンシューマーはありません。Bean コンポーネントと同様に機能します。

URI 形式

cxfbean:serviceBeanRef
Copy to Clipboard Toggle word wrap
serviceBeanRef は、サービス Bean オブジェクトを検索するためのレジストリーキーです。serviceBeanRefList オブジェクトを参照する場合、List の要素はエンドポイントによって許可されるサービス Bean オブジェクトです。

オプション

Expand
名前 説明 必須 ? デフォルト値
bus # 表記で指定された CXF バス参照。参照オブジェクトは org.apache.cxf.Bus のインスタンスである必要があります。 bus=#busName いいえ CXF Bus Factory によって作成されたデフォルトのバス
cxfBeanBinding # 表記で指定された CXF Bean バインディング。参照されるオブジェクトは、org.apache.camel.component.cxf.cxfbean.CxfBeanBinding のインスタンスである必要があります。 cxfBinding=#bindingName いいえ DefaultCxfBeanBinding
headerFilterStrategy # 表記で指定されたヘッダーフィルターストラテジー。参照されるオブジェクトは org.apache.camel.spi.HeaderFilterStrategy のインスタンスである必要があります。 headerFilterStrategy=#strategyName いいえ CxfHeaderFilterStrategy
populateFromClass 2.3 以降、このオプションが false に設定されていない限り、POJO のアノテーションが付けられた wsdlLocation は無視されます(デフォルト)。2.3 より前のバージョンでは、POJO のアノテーションが付けられた wsdlLocation は常に尊重され、無視することはできません。 truefalse いいえ true
providers 2.5 以降、CXFRS エンドポイントのプロバイダーを設定します。 providers=#providerRef1,#providerRef2 いいえ null
setDefaultBus CXF エンドポイントがバスを単独で作成すると、デフォルトのバスを設定します。 truefalse いいえ false

Headers

Expand
名前 説明 タイプ 必須 ? デフォルト値 In/Out
CamelHttpCharacterEncoding (before 2.0-m2: CamelCxfBeanCharacterEncoding) 文字エンコーディング 文字列 いいえ なし In ISO-8859-1
CamelContentType (before 2.0-m2: CamelCxfBeanContentType) コンテンツタイプ 文字列 いいえ \**/*\* In text/xml
CamelHttpBaseUri (2.0-m3 以前: CamelCxfBeanRequestBasePath)
このヘッダーの値は、CXF メッセージで Message.BASE_PATH プロパティーとして設定されます。これは CXF JAX-RS 処理に必要です。基本的には、要求 URI のスキーム、ホスト、およびポートの部分です。 文字列 はい Camel エクスチェンジのソースエンドポイントのエンドポイント URI In http://localhost:9000
CamelHttpPath (before 2.0-m2: CamelCxfBeanRequestPat{}h) 要求 URI のパス 文字列 はい なし In consumer/123
CamelHttpMethod (before 2.0-m2: CamelCxfBeanVerb) RESTful リクエストの動詞 文字列 はい なし In 取得 します を配置 投稿、削除
CamelHttpResponseCode HTTP 応答コード 整数 いいえ なし Out 200
注記
現在、CXF Bean コンポーネントは Jetty HTTP コンポーネントでテストされており、変換を必要とせずに Jetty HTTP コンポーネントからのヘッダーを理解することができます。

作業例

この例は、Jetty HTTP サーバーを起動するルートを作成する方法を示しています。ルートは CXF Bean にリクエストを送信し、JAXRS アノテーション付きサービスを呼び出します。
まず、以下のようにルートを作成します。from エンドポイントは、ポート 9000 でリッスンする Jetty HTTP エンドポイントです。RESTful リクエスト URI はエンドポイントの URI http://localhost:9000 と完全に一致しないため、matchOnUriPrefix オプションを true に設定する必要があります。
<route>
	<from uri="jetty:http://localhost:9000?matchOnUriPrefix=true" />
	<to uri="cxfbean:customerServiceBean" />
	<to uri="mock:endpointA" />
</route>
Copy to Clipboard Toggle word wrap
to エンドポイントは、Bean が customerServiceBean という名前の CXF Bean です。名前はレジストリーから検索されます。次に、サービス Bean が Spring レジストリーで利用可能であることを確認します。Spring 設定で Bean 定義を作成します。この例では、(要素が 1 つ)サービス Bean のリストを作成します。List なしで単一の Bean のみを作成できます。
<util:list id="customerServiceBean">
	<bean class="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService" />
</util:list>

<bean class="org.apache.camel.wsdl_first.PersonImpl" id="jaxwsBean" />
Copy to Clipboard Toggle word wrap
それがそれです。ルートが起動すると、Web サービスはビジネスに準備が整います。HTTP クライアントは要求および応答を受信できます。
url = new URL("http://localhost:9000/customerservice/orders/223/products/323");
in = url.openStream();
assertEquals("{\"Product\":{\"description\":\"product 323\",\"id\":323}}", CxfUtils.getStringFromInputStream(in));
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat