12.2. コンシューマーの設定
12.2.1. HTTP コンシューマーエンドポイントのメカニズム
HTTP コンシューマーエンドポイントは、エンドポイントがリダイレクト応答を自動的に受け入れるかどうか、エンドポイントがチャンクを使用できるかどうか、エンドポイントがキープアライブを要求するかどうか、エンドポイントがプロキシーと対話する方法など、いくつかの HTTP 接続属性を指定できます。HTTP 接続プロパティーの他に、HTTP コンシューマーエンドポイントはセキュリティー保護する方法を指定できます。
コンシューマーエンドポイントは、以下の 2 つのメカニズムを使用して設定できます。
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 コンシューマーエンドポイントの設定に使用する要素」 に説明があります。
要素 | 説明 |
---|---|
| タイムアウト、キープアライブリクエスト、コンテンツタイプなどの HTTP 接続プロパティーを指定します。「クライアント要素」を参照してください。 |
エンドポイントがプリエンプションで使用する Basic 認証方法を設定するためのパラメーターを指定します。 | |
送信 HTTP プロキシーサーバーに対して Basic 認証を設定するためのパラメーターを指定します。 | |
SSL/TLS の設定に使用するパラメーターを指定します。 | |
エンドポイントによって使用される基本認証情報または 401 HTTP チャレンジへの応答として、エンドポイントによって使用される基本認証情報を提供するオブジェクトの Bean 参照またはクラス名を指定します。 | |
情報送信前に HTTPS サービスプロバイダーとのコネクションに対して信頼を確立するために HTTP(S) |
クライアント要素
http-conf:client
要素は、コンシューマーエンドポイントの HTTP コネクションのセキュリティー以外のプロパティーを設定するために使用されます。表12.2「HTTP コンシューマー設定の属性」 で説明されている属性で、接続のプロパティーを指定します。
属性 | 説明 |
---|---|
コンシューマーがタイムアウトするまでの接続の確立を試みる期間 (ミリ秒単位) を指定します。デフォルトは
| |
コンシューマーがタイムアウトするまでの応答を待つ期間 (ミリ秒単位) を指定します。デフォルトは
| |
コンシューマーが自動的に発行されたリダイレクトに従うかどうかを指定します。デフォルトは | |
コンシューマーがリダイレクトを満たすリクエストを再送信する最大回数を指定します。デフォルトは | |
コンシューマーがチャンクを使用して要求を送信するかどうかを指定します。デフォルトは 以下のいずれかが true の場合、チャンクは使用できません。
いずれの場合も、 | |
コンシューマーを処理する用意があるメディアタイプを指定します。値は HTTP | |
応答を受信する目的でコンシューマーが好む言語 (たとえば、アメリカ英語) を指定します。この値は、HTTP 言語タグは、国際標準化機構 (ISO) によって規制されており、通常、ISO-639 標準によって決定される言語コードと ISO-3166 標準によって決定される国コードをハイフンで区切って組み合わせることによって形成されます。たとえば、en-US はアメリカ英語を表します。 | |
コンシューマーを処理する用意があるコンテンツエンコーディングを指定します。コンテンツエンコーディングラベルは、Internet Assigned Numbers Authority (IANA) により規制されています。この値は、HTTP | |
メッセージのボディーに送信されるデータのメディアタイプを指定します。メディアタイプは、多目的インターネットメール拡張機能 (MIME) タイプを使用して指定されます。値は、HTTP
Web サービスの場合、これを | |
要求が呼び出されるリソースのインターネットホストおよびポート番号を指定します。値は HTTP 通常この属性は必要ありません。これは、特定の DNS シナリオまたはアプリケーション設計でのみ必要です。たとえば、クライアントがクラスターに優先するホスト (つまり、同じインターネットプロトコル (IP) アドレスへのマッピング) を示します。 | |
各リクエスト/レスポンスダイアログの後に、特定の接続を開いたままにするか、閉じるかどうかを指定します。有効な値は 2 つあります。
| |
コンシューマーからサービスプロバイダーへの要求を設定するチェーンに含まれるキャッシュが順守する必要のある動作に関するディレクティブを指定します。「コンシューマーキャッシュ制御ディレクティブ」を参照してください。 | |
すべての要求で送信される静的クッキーを指定します。 | |
要求の発信元のブラウザーに関する情報を指定します。World Wide Web コンソーシアム (W3C) の HTTP 仕様では、これは ユーザーエージェント とも呼ばれます。一部のサーバーは、リクエストを送信するクライアントに基づいて最適化されます。 | |
特定のサービスで要求を行うようにコンシューマーに指示するリソースの URL を指定します。この値は、HTTP この HTTP プロパティーは、要求が URL を入力せずにハイパーリンクの結果をクリックすると、使用されます。これにより、サーバーは以前のタスクフローに基づいて処理を最適化し、ログ記録、最適化されたキャッシュ、廃止されたリンクやタイプミスのあるリンクのトレースなどの目的でリソースへのバックリンクのリストを生成できます。ただし、通常は Web サービスアプリケーションでは使用されません。
| |
別のプロバイダー→コンシューマー接続を介して応答を受信するための分離されたエンドポイントの URL を指定します。分離されたエンドポイントの使用の詳細については、「分離モードでの HTTP トランスポートの使用」 を参照してください。 分離されたエンドポイントが機能するには、WS-Addressing を使用するようにコンシューマーエンドポイントとサービスプロバイダーエンドポイントの両方を設定する必要があります。 | |
要求がルーティングされるプロキシーサーバーの URL を指定します。 | |
要求がルーティングされるプロキシーサーバーのポート番号を指定します。 | |
要求のルーティングに使用されるプロキシーサーバータイプを指定します。有効な値は以下のとおりです。
|
例
例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章コンジット を参照してください。
12.2.3. WSDL の使用
Namespace
HTTP コンシューマーエンドポイントの設定に使用される WSDL 要素は、名前空間 http://cxf.apache.org/transports/http/configuration で定義されています。通常、接頭辞 http-conf
を使用して参照されます。HTTP 設定要素を使用するには、例12.7「HTTP Consumer WSDL Element の名前空間」 にある行をエンドポイントの WSDL ドキュメントの definitions
要素に追加する必要があります。
例12.7 HTTP Consumer WSDL Element の名前空間
<definitions ... xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
Undertow ランタイムまたは Netty ランタイム
http-conf
namespace の要素を使用して、Undertow ランタイムまたは Netty ランタイムを設定できます。
クライアント要素
http-conf:client
要素は、WSDL ドキュメントで HTTP コンシューマーのコネクションプロパティーを指定するために使用されます。http-conf:client
要素は WSDL port
要素の子です。設定ファイルで使用される client
要素と同じ属性があります。属性については、表12.2「HTTP コンシューマー設定の属性」 で説明されています。
例
例12.8「HTTP コンシューマーエンドポイントを設定する WSDL」 は、キャッシュと対話しないことを示す HTTP コンシューマーエンドポイントを設定する WSDL フラグメントを示しています。
例12.8 HTTP コンシューマーエンドポイントを設定する WSDL
<service ... > <port ... > <soap:address ... /> <http-conf:client CacheControl="no-cache" /> </port> </service>
12.2.4. コンシューマーキャッシュ制御ディレクティブ
表12.3「http-conf:client
キャッシュ制御ディレクティブ」 に、HTTP コンシューマーがサポートするキャッシュ制御ディレクティブの一覧を示します。
ディレクティブ | 動作 |
---|---|
no-cache | キャッシュは、サーバーで最初にその応答を再検証しない限り、特定の応答を使用して後続の要求を満たすことはできません。この値で特定の応答ヘッダーフィールドが指定されていると、制限は応答内のそれらのヘッダーフィールドにのみ適用されます。応答ヘッダーフィールドが指定されていないと、制限は応答全体に適用されます。 |
no-store | キャッシュは、応答の一部またはそれを呼び出した要求の一部を格納してはなりません。 |
max-age | コンシューマーは、指定された秒単位の時間以下の応答を受け入れることができます。 |
max-stale | コンシューマーは、有効期限を超えた応答を受け入れることができます。値が max-stale に割り当てられている場合、それは、応答の有効期限を超えて、コンシューマーがその応答を受け入れることができる秒数を表します。値が割り当てられていない場合、コンシューマーは任意の年齢の古い応答を受け入れることができます。 |
min-fresh | コンシューマーは、少なくとも指定された秒数の間、まだ新鮮な応答を望んでいます。 |
no-transform | キャッシュは、プロバイダーとコンシューマー間の応答でコンテンツのメディアタイプや場所を変更することはできません。 |
only-if-cached | キャッシュは、キャッシュに現在保存されている応答のみを返し、リロードまたは再検証が必要な応答は返しません。 |
cache-extension | 他のキャッシュディレクティブへの追加の拡張機能を指定します。拡張機能は、情報提供または動作のいずれかになります。拡張ディレクティブは標準ディレクティブのコンテキストで指定されるため、拡張ディレクティブを理解していないアプリケーションは、標準ディレクティブで義務付けられている動作に準拠できます。 |