Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第30章 CXF Bean コンポーネント
CXF Bean コンポーネント(2.0 以降) リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
cxfbean: コンポーネントを使用すると、他の Camel エンドポイントがエクスチェンジを送信し、Web サービス Bean オブジェクトを呼び出すことができます。現在、JAXRS および JAXWS (Camel 2.1 の新機能)アノテーション付きサービス Bean のみをサポートしています。
重要
CxfBeanEndpoint
は ProcessorEndpoint
であるため、コンシューマーはありません。Bean コンポーネントと同様に機能します。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
cxfbean:serviceBeanRef
cxfbean:serviceBeanRef
serviceBeanRef は、サービス Bean オブジェクトを検索するためのレジストリーキーです。
serviceBeanRef
が List
オブジェクトを参照する場合、List
の要素はエンドポイントによって許可されるサービス Bean オブジェクトです。
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | 説明 | 例 | 必須 ? | デフォルト値 |
---|---|---|---|---|
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 は常に尊重され、無視することはできません。
|
true 、false
|
いいえ |
true
|
providers
|
2.5 以降、CXFRS エンドポイントのプロバイダーを設定します。 |
providers=#providerRef1,#providerRef2
|
いいえ |
null
|
setDefaultBus
|
CXF エンドポイントがバスを単独で作成すると、デフォルトのバスを設定します。 |
true 、false
|
いいえ |
false
|
Headers リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | 説明 | タイプ | 必須 ? | デフォルト値 | 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>
<route>
<from uri="jetty:http://localhost:9000?matchOnUriPrefix=true" />
<to uri="cxfbean:customerServiceBean" />
<to uri="mock:endpointA" />
</route>
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" />
<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" />
それがそれです。ルートが起動すると、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));
url = new URL("http://localhost:9000/customerservice/orders/223/products/323");
in = url.openStream();
assertEquals("{\"Product\":{\"description\":\"product 323\",\"id\":323}}", CxfUtils.getStringFromInputStream(in));