12.2.2. 設定の使用

Namespace

HTTP コンシューマーエンドポイントの設定に使用される要素は、名前空間 http://cxf.apache.org/transports/http/configuration で定義されています。通常、接頭辞 http-conf を使用して参照されます。HTTP 設定要素を使用するには、例12.4「HTTP コンシューマー設定名前空間」 にある行をエンドポイント設定ファイルの beans 要素に追加する必要があります。また、設定要素の namespace を xsi:schemaLocation 属性に追加する必要があります。

例12.4 HTTP コンシューマー設定名前空間

<beans ...
       xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
       ...
       xsi:schemaLocation="...
                           http://cxf.apache.org/transports/http/configuration
                              http://cxf.apache.org/schemas/configuration/http-conf.xsd
                          ...">

Undertow ランタイムまたは Netty ランタイム

http-conf namespace の要素を使用して、Undertow ランタイムまたは Netty ランタイムを設定できます。

conduit 要素

http-conf:conduit 要素とその子を使用して、HTTP コンシューマーエンドポイントを設定します。http-conf:conduit 要素は、エンドポイントに対応する WSDL port 要素を指定する単一の属性 name を取ります。name 属性の値は、portQName`.http-conduit` の形式を取ります。例12.5「http-conf:conduit 要素」 は、エンドポイントのターゲット namespace が http://widgets.widgetvendor.net の場合に WSDL フラグメント <port binding="widgetSOAPBinding" name="widgetSOAPPort> によって指定されるエンドポイントの設定を追加するために使用される http-conf:conduit 要素を示しています。

例12.5 http-conf:conduit 要素

...
  <http-conf:conduit name="{http://widgets/widgetvendor.net}widgetSOAPPort.http-conduit">
    ...
  </http-conf:conduit>
...

http-conf:conduit 要素には、設定情報を指定する子要素があります。これらは、表12.1「HTTP コンシューマーエンドポイントの設定に使用する要素」 に説明があります。

表12.1 HTTP コンシューマーエンドポイントの設定に使用する要素

要素説明

http-conf:client

タイムアウト、キープアライブリクエスト、コンテンツタイプなどの HTTP 接続プロパティーを指定します。「クライアント要素」を参照してください。

http-conf:authorization

エンドポイントがプリエンプションで使用する Basic 認証方法を設定するためのパラメーターを指定します。http-conf:basicAuthSupplier オブジェクトを指定することが推奨されます。

http-conf:proxyAuthorization

送信 HTTP プロキシーサーバーに対して Basic 認証を設定するためのパラメーターを指定します。

http-conf:tlsClientParameters

SSL/TLS の設定に使用するパラメーターを指定します。

http-conf:basicAuthSupplier

エンドポイントによって使用される基本認証情報または 401 HTTP チャレンジへの応答として、エンドポイントによって使用される基本認証情報を提供するオブジェクトの Bean 参照またはクラス名を指定します。

http-conf:trustDecider

情報送信前に HTTPS サービスプロバイダーとのコネクションに対して信頼を確立するために HTTP(S) URLConnection オブジェクトをチェックするオブジェクトの Bean 参照またはクラス名を指定します。

クライアント要素

http-conf:client 要素は、コンシューマーエンドポイントの HTTP コネクションのセキュリティー以外のプロパティーを設定するために使用されます。表12.2「HTTP コンシューマー設定の属性」 で説明されている属性で、接続のプロパティーを指定します。

表12.2 HTTP コンシューマー設定の属性

属性説明

ConnectionTimeout

コンシューマーがタイムアウトするまでの接続の確立を試みる期間 (ミリ秒単位) を指定します。デフォルトは 30000 です。

0 を指定すると、コンシューマーはリクエストの送信を無期限に続行します。

ReceiveTimeout

コンシューマーがタイムアウトするまでの応答を待つ期間 (ミリ秒単位) を指定します。デフォルトは 30000 です。

0 を指定すると、コンシューマーは無期限に待機します。

AutoRedirect

コンシューマーが自動的に発行されたリダイレクトに従うかどうかを指定します。デフォルトは false です。

MaxRetransmits

コンシューマーがリダイレクトを満たすリクエストを再送信する最大回数を指定します。デフォルトは -1 で、無制限の再送信が許可されることを指定します。

AllowChunking

コンシューマーがチャンクを使用して要求を送信するかどうかを指定します。デフォルトは true で、リクエストの送信時にコンシューマーがチャンクを使用することを指定します。

以下のいずれかが true の場合、チャンクは使用できません。

  • http-conf:basicAuthSupplier が、クレデンシャルを先制的に提供するように設定されている。
  • AutoRedirecttrue に設定されている。

いずれの場合も、AllowChunking の値は無視され、チャンクは許可されません。

Accept

コンシューマーを処理する用意があるメディアタイプを指定します。値は HTTP Accept プロパティーの値として使用されます。属性の値は、多目的インターネットメール拡張 (MIME) タイプを使用して指定されます。

AcceptLanguage

応答を受信する目的でコンシューマーが好む言語 (たとえば、アメリカ英語) を指定します。この値は、HTTP AcceptLanguage プロパティーの値として使用されます。

言語タグは、国際標準化機構 (ISO) によって規制されており、通常、ISO-639 標準によって決定される言語コードと ISO-3166 標準によって決定される国コードをハイフンで区切って組み合わせることによって形成されます。たとえば、en-US はアメリカ英語を表します。

AcceptEncoding

コンシューマーを処理する用意があるコンテンツエンコーディングを指定します。コンテンツエンコーディングラベルは、Internet Assigned Numbers Authority (IANA) により規制されています。この値は、HTTP AcceptEncoding プロパティーの値として使用されます。

ContentType

メッセージのボディーに送信されるデータのメディアタイプを指定します。メディアタイプは、多目的インターネットメール拡張機能 (MIME) タイプを使用して指定されます。値は、HTTP ContentType プロパティーの値として使用されます。デフォルトは text/xml です。

Web サービスの場合、これを text/xml に設定する必要があります。クライアントが CGI スクリプトに HTML フォームデータを送信している場合、これを application/x-www-form-urlencoded に設定する必要があります。HTTP POST リクエストが固定されたペイロードフォーマットにバインドされている場合 (SOAP ではなく)、コンテンツ型は通常 application/octet-stream に設定されます。

Host

要求が呼び出されるリソースのインターネットホストおよびポート番号を指定します。値は HTTP Host プロパティーの値として使用されます。

通常この属性は必要ありません。これは、特定の DNS シナリオまたはアプリケーション設計でのみ必要です。たとえば、クライアントがクラスターに優先するホスト (つまり、同じインターネットプロトコル (IP) アドレスへのマッピング) を示します。

接続

各リクエスト/レスポンスダイアログの後に、特定の接続を開いたままにするか、閉じるかどうかを指定します。有効な値は 2 つあります。

  • Keep-Alive - 最初のリクエスト/応答シーケンスの後に、コネクションを開いたままにしておくことをコンシューマーが希望することを指定します。サーバーがそれに従うと、コンシューマーが閉じられるまで接続が開かれます。
  • close (デフォルト) - 各リクエスト/応答シーケンスの後に、サーバーへのコネクションが閉じられるよう指定します。

CacheControl

コンシューマーからサービスプロバイダーへの要求を設定するチェーンに含まれるキャッシュが順守する必要のある動作に関するディレクティブを指定します。「コンシューマーキャッシュ制御ディレクティブ」を参照してください。

cookie

すべての要求で送信される静的クッキーを指定します。

BrowserType

要求の発信元のブラウザーに関する情報を指定します。World Wide Web コンソーシアム (W3C) の HTTP 仕様では、これは ユーザーエージェント とも呼ばれます。一部のサーバーは、リクエストを送信するクライアントに基づいて最適化されます。

Referer

特定のサービスで要求を行うようにコンシューマーに指示するリソースの URL を指定します。この値は、HTTP Referer プロパティーの値として使用されます。

この HTTP プロパティーは、要求が URL を入力せずにハイパーリンクの結果をクリックすると、使用されます。これにより、サーバーは以前のタスクフローに基づいて処理を最適化し、ログ記録、最適化されたキャッシュ、廃止されたリンクやタイプミスのあるリンクのトレースなどの目的でリソースへのバックリンクのリストを生成できます。ただし、通常は Web サービスアプリケーションでは使用されません。

AutoRedirect 属性が true に設定されていて、リクエストがリダイレクトされた場合、Referer 属性で指定された値はすべてオーバーライドされます。HTTP 参照プロパティーの値は、コンシューマーの元のリクエストをリダイレクトするサービスの URL に設定されます。

DecoupledEndpoint

別のプロバイダー→コンシューマー接続を介して応答を受信するための分離されたエンドポイントの URL を指定します。分離されたエンドポイントの使用の詳細については、「分離モードでの HTTP トランスポートの使用」 を参照してください。

分離されたエンドポイントが機能するには、WS-Addressing を使用するようにコンシューマーエンドポイントとサービスプロバイダーエンドポイントの両方を設定する必要があります。

ProxyServer

要求がルーティングされるプロキシーサーバーの URL を指定します。

ProxyServerPort

要求がルーティングされるプロキシーサーバーのポート番号を指定します。

ProxyServerType

要求のルーティングに使用されるプロキシーサーバータイプを指定します。有効な値は以下のとおりです。

  • HTTP(デフォルト)
  • SOCKS

例12.6「HTTP コンシューマーエンドポイントの設定」 は、リクエスト間でプロバイダーへの接続を開いたままにし、呼び出しごとに 1 回だけリクエストを再送信し、チャンクストリームを使用できない HTTP コンシューマーエンドポイントの設定を示しています。

例12.6 HTTP コンシューマーエンドポイントの設定

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
       xsi:schemaLocation="http://cxf.apache.org/transports/http/configuration
                             http://cxf.apache.org/schemas/configuration/http-conf.xsd
                           http://www.springframework.org/schema/beans
                             http://www.springframework.org/schema/beans/spring-beans.xsd">

  <http-conf:conduit name="{http://apache.org/hello_world_soap_http}SoapPort.http-conduit">
    <http-conf:client Connection="Keep-Alive"
                      MaxRetransmits="1"
                      AllowChunking="false" />
  </http-conf:conduit>
</beans>

補足情報

HTTP コンジットの詳細については、16章コンジット を参照してください。