16.2. Web サービスサブシステムを設定します
JBoss EAP 6
にデプロイされた Web サービスの動作を制御する Web サービスサブシステムでは、多くの設定オプションを使用できます。管理 CLI スクリプトの各要素を変更するコマンド (EAP_HOME/bin/jboss-cli.sh
または EAP_HOME/bin/jboss-cli.bat
) が提供されています。スタンドアロンサーバーのコマンドの /profile= default
部分を削除するか、default
を設定するプロファイルの名前に置き換えます。
公開されたエンドポイントアドレス
エンドポイントで公開された WSDL コントラクトの <soap:address>
要素を書き換えることができます。この機能を使用して、各エンドポイントのクライアントにアドバタイズされるサーバーアドレスを制御できます。次の各オプション要素は、要件に合わせて変更できます。アクティブな WS 展開がある場合、これらの要素のいずれかを変更するには、サーバーをリロードする必要があります。
要素 | Description | CLI コマンド |
---|---|---|
modify-wsdl-address |
常に WSDL アドレスを変更するかどうか。true の場合、
<soap:address> の内容は常に上書きされます。false の場合、<soap:address> のコンテンツは、有効な URL でない場合にのみ上書きされます。使用される値は、以下で説明する wsdl-host 、wsdl-port 、および wsdl-secure-port になります。
|
/profile=default/subsystem=webservices/:write-attribute(name=modify-wsdl-address,value=true)
|
wsdl-host | <soap:address> の書き換えに使用するホスト名/IP アドレス。wsdl-host が文字列 jbossws.undefined.host に設定されている場合、<soap:address> を書き換えるときにリクエスターのホストが使用されます。
| /profile=default/subsystem=webservices/:write-attribute(name=wsdl-host,value=10.1.1.1) |
wsdl-port | SOAP アドレスの書き換えに使用される HTTP ポートを明示的に定義する整数。未定義の場合、HTTP ポートは、インストールされている HTTP コネクターのリストを照会することによって識別されます。 | /profile=default/subsystem=webservices/:write-attribute(name=wsdl-port,value=8080)
|
wsdl-secure-port | SOAP アドレスの書き換えに使用される HTTPS ポートを明示的に定義する整数。未定義の場合、HTTPS ポートは、インストールされている HTTPS コネクターのリストを照会することによって識別されます。 | /profile=default/subsystem=webservices/:write-attribute(name=wsdl-secure-port,value=8443)
|
事前定義されたエンドポイント設定
エンドポイントの実装で参照できるエンドポイント設定を定義できます。これを使用する 1 つの方法は、アノテーションが付いた特定のエンドポイント設定でマークされた WS エンドポイントに特定のハンドラーを追加することです。@org.jboss.ws.api.annotation.EndpointConfig
。
Standard-Endpoint-Config
。カスタム設定の例、Recording-Endpoint-Config
、も含まれています。これは、レコーディングハンドラーの例を提供します。TheStandard-Endpoint-Config
他の設定に関連付けられていないエンドポイントに自動的に使用されます。
Standard-Endpoint-Config
管理 CLI を使用して、次のコマンドを使用します。
/profile=default/subsystem=webservices/endpoint-config=Standard-Endpoint-Config/:read-resource(recursive=true,proxies=false,include-runtime=false,include-defaults=true)
エンドポイント設定
管理 API で endpoint-config
と呼ばれるエンドポイント設定には、特定のエンドポイントに適用される pre-handler-chain
、post-handler-chain
、およびいくつかのプロパティーが含まれます。次のコマンドは、エンドポイント設定を読み取り、追加します。
例16.1 エンドポイント設定を読み取る
/profile=default/subsystem=webservices/endpoint-config=Recording-Endpoint-Config:read-resource
例16.2 エンドポイント設定を追加する
/profile=default/subsystem=webservices/endpoint-config=My-Endpoint-Config:add
ハンドラーチェーン
各エンドポイント設定は、PRE
および POST
ハンドラーチェーンに関連付けることができます。各ハンドラーチェーンには、JAXWS 準拠のハンドラーが含まれる場合があります。アウトバウンドメッセージの場合、PRE ハンドラーチェーンハンドラーは、@HandlerChain
アノテーションなどの標準の JAX-WS を使用してエンドポイントにアタッチされたハンドラーの前に実行されます。POST ハンドラーチェーンハンドラーは、通常のエンドポイントハンドラーの後に実行されます。受信メッセージには、逆が適用されます。JAX-WS は XML ベースの Web サービスの標準 API で、で http://jcp.org/en/jsr/detail?id=224 説明されています。
protocol-bindings
属性を含めることもできます。
例16.3 ハンドラーチェーンを読む
/profile=default/subsystem=webservices/endpoint-config=Recording-Endpoint-Config/pre-handler-chain=recording-handlers:read-resource
例16.4 ハンドラーチェーンの追加
/profile=default/subsystem=webservices/endpoint-config=My-Endpoint-Config/post-handler-chain=my-handlers:add(protocol-bindings="##SOAP11_HTTP")
ハンドラー
JAXWS ハンドラーは、ハンドラーチェーン内の子要素 ハンドラー
です。ハンドラーは、ハンドラークラスの完全修飾クラス名である クラス
属性を取ります。エンドポイントがデプロイされると、参照デプロイメントごとにそのクラスのインスタンスが作成されます。モジュールのデプロイメントクラ出力ダーまたはクラ出力ダーのいずれかorg.jboss.as.webservices.server.integration
ハンドラークラスをロードできる必要があります。
例16.5 ハンドラーを読む
/profile=default/subsystem=webservices/endpoint-config=Recording-Endpoint-Config/pre-handler-chain=recording-handlers/handler=RecordingHandler:read-resource
例16.6 ハンドラーの追加
/profile=default/subsystem=webservices/endpoint-config=My-Endpoint-Config/post-handler-chain=my-handlers/handler=foo-handler:add(class="org.jboss.ws.common.invocation.RecordingServerHandler")
Web サービスランタイム情報
エンドポイント自体にクエリーを実行することで、Web コンテキストや WSDLURL などの Web サービスに関するランタイム情報を表示できます。*
文字を使用して、すべてのエンドポイントを一度に照会できます。次の例は、管理対象ドメイン内のサーバーとスタンドアロンサーバーの両方に対するコマンドを示しています。
例16.7 管理対象ドメイン内のサーバー上のすべての Web サービスエンドポイントに関するランタイム情報を表示する
マスター
でホストされ、管理対象ドメインで実行されている server-one
という名前のサーバー上のすべてのエンドポイントに関する情報を表示します。
/host=master/server=server-one/deployment="*"/subsystem=webservices/endpoint="*":read-resource
例16.8 スタンドアロンサーバー上のすべての Web サービスエンドポイントに関するランタイム情報を表示する
/deployment="*"/subsystem=webservices/endpoint="*":read-resource
例16.9 エンドポイント情報の例
{ "outcome" => "success", "result" => [{ "address" => [ ("deployment" => "jaxws-samples-handlerchain.war"), ("subsystem" => "webservices"), ("endpoint" => "jaxws-samples-handlerchain:TestService") ], "outcome" => "success", "result" => { "class" => "org.jboss.test.ws.jaxws.samples.handlerchain.EndpointImpl", "context" => "jaxws-samples-handlerchain", "name" => "TestService", "type" => "JAXWS_JSE", "wsdl-url" => "http://localhost:8080/jaxws-samples-handlerchain?wsdl" } }] }