12.3. サービスプロバイダーの設定
12.3.1. HTTP サービスプロバイダーのメカニズム
HTTP サービスプロバイダーのエンドポイントは、キープアライブリクエストを受け入れるかどうか、キャッシュとの対話方法、コンシューマーとの通信におけるエラーの許容度など、いくつかの HTTP 接続属性を指定できます。
サービスプロバイダーエンドポイントは、以下の 2 つのメカニズムを使用して設定できます。
12.3.2. 設定の使用
Namespace
HTTP プロバイダーエンドポイントの設定に使用される要素は、名前空間 http://cxf.apache.org/transports/http/configuration で定義されています。通常、接頭辞 http-conf
を使用して参照されます。HTTP 設定要素を使用するには、例12.9「HTTP プロバイダー設定名前空間」 にある行をエンドポイント設定ファイルの beans
要素に追加する必要があります。また、設定要素の namespace を xsi:schemaLocation
属性に追加する必要があります。
例12.9 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 ランタイムを設定できます。
destination 要素
http-conf:destination
要素およびその子を使用して HTTP サービスプロバイダーエンドポイントを設定します。http-conf:destination
要素は、エンドポイントに対応する WSDL port
要素を指定する単一の属性 name
を取ります。name
属性の値は、portQName`.http-destination` の形式を取ります。例12.10「http-conf:destination
要素」 は、エンドポイントのターゲット namespace http://widgets.widgetvendor.net の場合に、WSDL フラグメント <port binding="widgetSOAPBinding" name="widgetSOAPPort>
によって指定されるエンドポイントの設定を追加するために使用される http-conf:destination
要素を示しています。
例12.10 http-conf:destination
要素
... <http-conf:destination name="{http://widgets/widgetvendor.net}widgetSOAPPort.http-destination"> ... </http-conf:destination> ...
http-conf:destination
要素には、設定情報を指定する複数の子要素があります。これらは、表12.4「HTTP サービスプロバイダーエンドポイントの設定に使用される要素」 に説明があります。
要素 | 説明 |
---|---|
HTTP 接続プロパティーを指定します。「サーバー要素」 を参照してください。 | |
HTTP リクエストを処理するためにコンテキスト一致ストラテジーを設定するパラメーターを指定します。 | |
この宛先によって処理される HTTP リクエストのパラメーター順序が固定されるかどうかを指定します。 |
サーバー要素
http-conf:server
要素は、サービスプロバイダーエンドポイントの HTTP コネクションのプロパティーを設定するために使用されます。表12.5「HTTP サービスプロバイダー設定属性」 で説明されている属性で、接続のプロパティーを指定します。
Attribute | 説明 |
---|---|
接続がタイムアウトする前に、サービスプロバイダーが要求の受信を試行する時間の長さをミリ秒単位で設定します。デフォルトは
| |
リクエストの受信時に例外が出力されるかどうかを指定します。デフォルトは | |
コンシューマーへの応答の送信時にエラーが発生したときに例外を出力するかどうかを指定します。デフォルトは | |
応答の送信後に、サービスプロバイダーが接続のリクエストを開いたままにするかどうかを指定します。デフォルトは | |
クライアント要求で指定された URL が要求されたリソースに対して適切でなくなった場合に、クライアント要求がリダイレクトされる URL を指定します。この場合、サーバー応答の最初の行にステータスコードが自動的に設定されていない場合、ステータスコードは 302 に設定され、ステータスの説明はオブジェクト移動に設定されます。値は HTTP RedirectURL プロパティーの値として使用されます。 | |
サービスプロバイダーからコンシューマーへの応答を構成するチェーンに含まれるキャッシュが順守する必要のある動作に関するディレクティブを指定します。「サービスプロバイダーキャッシュ制御ディレクティブ」 を参照してください。 | |
応答で送信されるリソースがある URL を設定します。 | |
応答で送信される情報のメディアタイプを指定します。メディアタイプは、多目的インターネットメール拡張機能 (MIME) タイプを使用して指定されます。値は、HTTP ContentType の場所の値として使用されます。 | |
サービスプロバイダーによって送信される情報に適用されている追加のコンテンツエンコーディングを指定します。コンテンツエンコーディングラベルは、Internet Assigned Numbers Authority (IANA) により規制されています。コンテンツエンコーディング値には、zip、gzip、compress、deflate、および identity が含まれます。この値は、HTTP ContentEncoding プロパティーの値として使用されます。 コンテンツエンコーディングの主な用途は、zip や gzip などのエンコーディングメカニズムを使用してドキュメントを圧縮できるようにすることです。Apache CXF はコンテンツコードの検証を実行しません。指定されたコンテンツコーディングがアプリケーションレベルでサポートされていることを確認するのはユーザーの責任です。 | |
応答を送信しているサーバーのタイプを指定します。値は |
例
例12.11「HTTP サービスプロバイダーエンドポイントの設定」 は、キープアライブ要求を尊重し、すべての通信エラーを抑制する HTTP サービスプロバイダーエンドポイントの設定を示しています。
例12.11 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:destination name="{http://apache.org/hello_world_soap_http}SoapPort.http-destination"> <http-conf:server SuppressClientSendErrors="true" SuppressClientReceiveErrors="true" HonorKeepAlive="true" /> </http-conf:destination> </beans>
12.3.3. WSDL の使用
Namespace
HTTP プロバイダーエンドポイントの設定に使用される WSDL 要素は、名前空間 http://cxf.apache.org/transports/http/configuration で定義されています。通常、接頭辞 http-conf
を使用して参照されます。HTTP 設定要素を使用するには、例12.12「HTTP プロバイダーの WSDL 要素の名前空間」 にある行をエンドポイントの WSDL ドキュメントの definitions
要素に追加する必要があります。
例12.12 HTTP プロバイダーの WSDL 要素の名前空間
<definitions ... xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
Undertow ランタイムまたは Netty ランタイム
http-conf
namespace の要素を使用して、Undertow ランタイムまたは Netty ランタイムを設定できます。
サーバー要素
http-conf:server
要素は、WSDL ドキュメントで HTTP サービスプロバイダーのコネクションプロパティーを指定するために使用されます。http-conf:server
要素は WSDL port
要素の子です。設定ファイルで使用される server
要素と同じ属性があります。属性については、表12.5「HTTP サービスプロバイダー設定属性」 で説明されています。
例
例12.13「HTTP サービスプロバイダーエンドポイントを設定する WSDL」 は、キャッシュと対話しないことを指定する HTTP サービスプロバイダーエンドポイントを設定する WSDL フラグメントを示しています。
例12.13 HTTP サービスプロバイダーエンドポイントを設定する WSDL
<service ... > <port ... > <soap:address ... /> <http-conf:server CacheControl="no-cache" /> </port> </service>
12.3.4. サービスプロバイダーキャッシュ制御ディレクティブ
表12.6「http-conf:server
キャッシュ制御ディレクティブ」 HTTP サービスプロバイダーがサポートするキャッシュ制御ディレクティブをリスト表示します。
ディレクティブ | 動作 |
---|---|
no-cache | キャッシュは、サーバーで最初にその応答を再検証しない限り、特定の応答を使用して後続の要求を満たすことはできません。この値で特定の応答ヘッダーフィールドが指定されていると、制限は応答内のそれらのヘッダーフィールドにのみ適用されます。応答ヘッダーフィールドが指定されていないと、制限は応答全体に適用されます。 |
public | すべてのキャッシュは応答を保存できます。 |
プライベート | パブリック (共有) キャッシュは、応答が 1 人のユーザーを対象としているため、応答を保存できません。この値で特定の応答ヘッダーフィールドが指定されていると、制限は応答内のそれらのヘッダーフィールドにのみ適用されます。応答ヘッダーフィールドが指定されていないと、制限は応答全体に適用されます。 |
no-store | キャッシュは、応答の一部またはそれを呼び出した要求の一部を格納してはなりません。 |
no-transform | キャッシュは、サーバーとクライアント間の応答でコンテンツのメディアタイプまたは場所を変更してはなりません。 |
must-revalidate | キャッシュは、応答に関連する期限切れのエントリーを再検証してから、そのエントリーを後続の応答で使用できるようにする必要があります。 |
proxy-revalidate | must-revalidate と同じですが、共有キャッシュにのみ適用でき、プライベート非共有キャッシュでは無視される点が異なります。このディレクティブを使用する場合は、パブリックキャッシュディレクティブも使用する必要があります。 |
max-age | クライアントは、指定された秒数を超えない経過時間の応答を受け入れることができます。 |
s-max-age | max-age と同じですが、共有キャッシュにのみ適用でき、プライベート非共有キャッシュによって無視される点が異なります。s-max-age で指定された年齢は、max-age で指定された年齢を上書きします。このディレクティブを使用する場合は、proxy-revalidate ディレクティブも使用する必要があります。 |
cache-extension | 他のキャッシュディレクティブへの追加の拡張機能を指定します。拡張機能は、情報提供または動作のいずれかになります。拡張ディレクティブは標準ディレクティブのコンテキストで指定されるため、拡張ディレクティブを理解していないアプリケーションは、標準ディレクティブで義務付けられている動作に準拠できます。 |