3.4. Web Services サブシステムの設定
JBossWS コンポーネントは Web サービスエンドポイントの処理を処理し、webservices
サブシステムを介して JBoss EAP に提供されます。サブシステムは、パブリッシュされたエンドポイントアドレスおよびエンドポイントハンドラーチェーンの設定をサポートします。
デフォルトの webservices
サブシステムはサーバーのドメインおよびスタンドアロン設定ファイルで提供されます。これには、事前定義されたエンドポイントおよびクライアント設定が複数含まれます。
<subsystem xmlns="urn:jboss:domain:webservices:2.0"> <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host> <endpoint-config name="Standard-Endpoint-Config"/> <endpoint-config name="Recording-Endpoint-Config"> <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM"> <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/> </pre-handler-chain> </endpoint-config> <client-config name="Standard-Client-Config"/> </subsystem>
3.4.1. エンドポイント設定
JBossWS では、追加の設定データを事前定義し、エンドポイント実装に関連付けることができます。事前定義されたエンドポイント設定は JAX-WS クライアントおよび JAX-WS エンドポイントの設定に使用できます。エンドポイント設定には JAX-WS ハンドラーとキー/値のプロパティー宣言を含めることができます。この機能は、ハンドラーを Web サービスのエンドポイントに追加し、JBossWS および Apache CXF 内部を制御する key/value プロパティーを設定する便利な方法を提供します。
webservices
サブシステムを使用すると、エンドポイント設定データの名前付きセットを定義できます。各エンドポイント設定にはサブシステム内で一意な名前を付ける必要があります。その後、org.jboss.ws.api.annotation.EndpointConfig
アノテーションを使用して、デプロイされたプリケーションの JAX-WS 実装にエンドポイント設定を割り当てることができます。エンドポイント設定の割り当ての詳細は、Assigning a Configuration を参照してください。
デフォルトの JBoss EAP 設定には、事前定義されたエンドポイント設定があります。
-
Standard-Endpoint-Config
は、明示的に割り当てられたエンドポイント設定のないエンドポイントに使用されるエンドポイント設定です。 -
Recording-Endpoint-Config
は、録画ハンドラーを含むカスタムエンドポイント設定の例になります。
エンドポイント設定の追加
管理 CLI を使用して新しいエンドポイント設定を追加できます。
/subsystem=webservices/endpoint-config=My-Endpoint-Config:add
エンドポイント設定の設定
管理 CLI を使用してエンドポイント設定の key/value プロパティー宣言を追加できます。
/subsystem=webservices/endpoint-config=Standard-Endpoint-Config/property=PROPERTY_NAME:add(value=PROPERTY_VALUE)
これらのエンドポイント設定の handler chains および handlers を設定できます。
エンドポイント設定の削除
管理 CLI を使用してエンドポイント設定を削除できます。
/subsystem=webservices/endpoint-config=My-Endpoint-Config:remove
3.4.2. ハンドラーチェーン
各エンドポイント設定は PRE
または POST
ハンドラーチェーンに関連付けることができます。各ハンドラーチェーンには JAX-WS 準拠のハンドラーが含まれ、メッセージに対して追加の処理を実行できます。アウトバウンドメッセージの場合、PRE
ハンドラーチェーンハンドラーは、@HandlerChain
アノテーションなどの標準の JAX-WS を使用してエンドポイントにアタッチされたハンドラーの前に実行されます。POST
ハンドラーチェーンハンドラーは、通常のエンドポイントハンドラーの後に実行されます。受信メッセージには、逆が適用されます。
サーバーアウトバウンドメッセージ
Endpoint --> PRE Handlers --> Endpoint Handlers --> POST Handlers --> ... --> Client
サーバーインバウンドメッセージ
Client --> ... --> POST Handlers --> Endpoint Handlers --> PRE Handlers --> Endpoint
ハンドラーチェーンの追加
以下の管理 CLI コマンドを使用すると、POST
ハンドラーチェーンをエンドポイント設定に追加できます。
/subsystem=webservices/endpoint-config=My-Endpoint-Config/post-handler-chain=my-post-handler-chain:add
以下の管理 CLI コマンドを使用すると、PRE
ハンドラーチェーンをエンドポイント設定に追加できます。
/subsystem=webservices/endpoint-config=My-Endpoint-Config/pre-handler-chain=my-pre-handler-chain:add
ハンドラーチェーンの設定
protocol-bindings
属性を使用して、ハンドラーチェーンの開始をトリガーするプロトコルを設定します。
/subsystem=webservices/endpoint-config=My-Endpoint-Config/post-handler-chain=my-post-handler-chain:write-attribute(name=protocol-bindings,value=##SOAP11_HTTP)
ハンドラーチェーンのハンドラーの設定に関する詳細は、ハンドラー のセクションを参照してください。
ハンドラーチェーンの削除
管理 CLI を使用してハンドラーチェーンを削除できます。
/subsystem=webservices/endpoint-config=My-Endpoint-Config/post-handler-chain=my-post-handler-chain:remove
3.4.3. ハンドラー
JAX-WS ハンドラーがハンドラーチェーンに追加され、ハンドラークラスの完全修飾名を指定します。エンドポイントがデプロイされると、参照デプロイメントごとにそのクラスのインスタンスが作成されます。org.jboss.as.webservices.server.integration
モジュールのデプロイメントクラスローダーまたはクラスローダーのいずれかがハンドラークラスをロードできる必要があります。
利用可能なハンドラーの一覧は、Handler Java ドキュメントを参照してください。
ハンドラーの追加
以下の管理 CLI コマンドを使用するとハンドラーをハンドラーチェーンに追加できます。ハンドラーのクラス名を指定する必要があります。
/subsystem=webservices/endpoint-config=My-Endpoint-Config/post-handler-chain=my-post-handler-chain/handler=my-handler:add(class="com.arjuna.webservices11.wsarj.handler.InstanceIdentifierInHandler")
ハンドラーの設定
管理 CLI を使用してハンドラーのクラスを更新できます。
/subsystem=webservices/endpoint-config=My-Endpoint-Config/post-handler-chain=my-post-handler-chain/handler=my-handler:add(class="org.jboss.ws.common.invocation.RecordingServerHandler")
ハンドラーの削除
管理 CLI を使用してハンドラーを削除できます。
/subsystem=webservices/endpoint-config=My-Endpoint-Config/post-handler-chain=my-post-handler-chain/handler=my-handler:
3.4.4. 公開されたエンドポイントアドレス
WSDL コントラクトで公開されるエンドポイントの <soap:address>
要素の書き換えがサポートされます。この機能は、各エンドポイントのクライアントに公開されるサーバーアドレスを制御するのに役立ちます。
以下の表は、この機能に設定できる属性を表しています。
名前 | 説明 |
---|---|
modify-wsdl-address | このブール値は、アドレスのリライト機能を有効化・無効化します。
|
wsdl-host |
|
wsdl-path-rewrite-rule |
この文字列は、サーバーから公開される各 |
wsdl-port | SOAP アドレスの書き換えに使用される HTTP ポートを明示的に定義するには、このプロパティーを設定します。それ以外の場合は、インストールされた HTTP コネクターのリストをクエリーして HTTP ポートを特定します。 |
wsdl-secure-port | SOAP アドレスの書き換えに使用される HTTPS ポートを明示的に定義するには、このプロパティーを設定します。そうでない場合は、インストールされた HTTPS コネクターのリストをクエリーして HTTPS ポートを特定します。 |
wsdl-uri-scheme |
このプロパティーは、 |
管理 CLI を使用してこれらの属性を更新できます。例を以下に示します。
/subsystem=webservices:write-attribute(name=wsdl-uri-scheme, value=https)
3.4.5. ランタイム情報の表示
各 Web サービスエンドポイントは、エンドポイント実装を提供するデプロイメントで公開されます。各エンドポイントはデプロイメントリソースとしてクエリーできます。各 Web サービスのエンドポイントは、Web コンテキストと WSDL URL を指定します。管理 CLI または管理コンソールを使用してこのランタイム情報にアクセスできます。
以下の管理 CLI コマンドは、jaxws-samples-handlerchain.war
デプロイメントからの TestService
エンドポイントの詳細を表示します。
/deployment="jaxws-samples-handlerchain.war"/subsystem=webservices/endpoint="jaxws-samples-handlerchain:TestService":read-resource(include-runtime=true) { "outcome" => "success", "result" => { "average-processing-time" => 23L, "class" => "org.jboss.test.ws.jaxws.samples.handlerchain.EndpointImpl", "context" => "jaxws-samples-handlerchain", "fault-count" => 0L, "max-processing-time" => 23L, "min-processing-time" => 23L, "name" => "TestService", "request-count" => 1L, "response-count" => 1L, "total-processing-time" => 23L, "type" => "JAXWS_JSE", "wsdl-url" => "http://localhost:8080/jaxws-samples-handlerchain?wsdl" } }
read-resource
操作で include-runtime=true
フラグを使用すると、ランタイム統計が返されます。ただし、Web サービスエンドポイントの統計収集はデフォルトで無効にされています。以下の管理 CLI コマンドを使用すると、Web サービスエンドポイントの統計を有効にできます。
/subsystem=webservices:write-attribute(name=statistics-enabled,value=true)
管理コンソールの Runtime タブから、Web サービスエンドポイントのランタイム情報を表示することもできます。そのためには、該当するサーバーを選択し、Webservices を選択してエンドポイントを選択します。