13.2. スタンドアロン webservices サブシステムの設定
webservices サブシステムには、数多くの設定オプションを使用することができます。管理 CLI スクリプト (EAP_HOME/bin/jboss-cli.sh または EAP_HOME/bin/jboss-cli.bat) 内の各要素を変更するためのコマンドが提供されています。スタンドアロンサーバーには、/profile=default の部分は削除します。また、管理対象ドメイン上の異なるプロファイルには、この部分を修正してサブシステムを変更してください。
エンドポイントで公開している WSDL コントラクトの <soap:address> 要素を書き換えることができます。この機能は、各エンドポイントのクライアントに対してアドバタイズされたサーバーアドレスを制御するのに使用することができます。以下のオプション要素はそれぞれ、必要に応じて修正することができます。これらのいずれかの要素を修正した場合には、サーバーを再起動する必要があります。
| 要素 | 説明 | 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)
|
エンドポイントの実装が参照可能なエンドポイント設定を定義することができます。その用途の一つとして、@org.jboss.ws.api.annotation.EndpointConfig のアノテーションが付いた所定のエンドポイント設定でマークされた任意の WS エンドポイントに所定のハンドラーを追加することができます。
Standard-Endpoint-Config が含まれています。また、カスタム設定の例である Recording-Endpoint-Config も含まれています。これは、レコーディングハンドラーの例を提供します。Standard-Endpoint-Config は、どの設定とも関連付けされていないエンドポイントに自動的に使用されます。
Standard-Endpoint-Config を読み取るには、次のコマンドを実行します。
/profile=default/subsystem=webservices/endpoint-config=Standard-Endpoint-Config/:read-resource(recursive=true,proxies=false,include-runtime=false,include-defaults=true)
エンドポイントの設定は、管理 API では endpoint-config と呼ばれており、post-handler-chain、post-handler-chain および特定のエンドポイントに適用される一部のプロパティーが含まれます。endpoint config の読み取りには以下のコマンドを使用します。
例13.1 endpoint config の読み取り
/profile=default/subsystem=webservices/endpoint-config=Recording-Endpoint-Config:read-resource
例13.2 endpoint config の追加
/profile=default/subsystem=webservices/endpoint-config=My-Endpoint-Config:add
各 endpoint config は PRE および POST ハンドラーチェーンと関連付けすることができます。各ハンドラーチェーンには、JAXWS に準拠したハンドラーを追加することが可能です。送信メッセージの場合は、@HandlerChain アノテーションなどの 標準的な JAXWS の方法を使用してエンドポイントに接続されるハンドラーよりも前に、PRE ハンドラーチェーンのハンドラーが実行されます。POST ハンドラーチェーンのハンドラーは、通常のエンドポイントハンドラーの後に実行されます。 受信メッセージの場合は、その逆が適用されます。JAX-WS は、XML ベース Web サービス向けの標準 API で、http://jcp.org/en/jsr/detail?id=224 に文書化されています。
protocol-binding 属性を追加することも可能です。
例13.3 ハンドラーチェーンの読み取り
/profile=default/subsystem=webservices/endpoint-config=Recording-Endpoint-Config/pre-handler-chain=recording-handlers:read-resource
例13.4 ハンドラーチェーンの追加
/profile=default/subsystem=webservices/endpoint-config=My-Endpoint-Config/post-handler-chain=my-handlers:add(protocol-bindings="##SOAP11_HTTP")
JAXWS ハンドラーは、ハンドラーチェーン内の子エレメント <handler> です。このハンドラーは、ハンドラークラスの完全修飾クラス名である class 属性を取ります。エンドポイントがデプロイされる際には、参照するデプロイメントごとにそのクラスのインスタンスが作成されます。デプロイメントクラスローダーまたは org.jboss.as.webservices.server.integration モジュール用のクラスローダーのいずれかがハンドラークラスをロード可能である必要があります。
例13.5 ハンドラーの読み取り
/profile=default/subsystem=webservices/endpoint-config=Recording-Endpoint-Config/pre-handler-chain=recording-handlers/handler=RecordingHandler:read-resource
例13.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 コンテキストや WSDL URL などの Web サービスのランタイム情報は、エンドポイント自体を問い合わせることによって表示することができます。* の文字を使用すると、全エンドポイントを一度に問い合わせることができます。以下の 2 つの情報は、管理対象ドメインのサーバーとスタンドアロンサーバーに対するコマンドを示しています。
例13.7 管理対象ドメイン内のサーバーでの全エンドポイントに関するランタイム情報の表示
master でホストされた server-one という名前のサーバーですべてのエンドポイントに関する情報を表示します。
/host=master/server=server-one/deployment="*"/subsystem=webservices/endpoint="*":read-resource
例13.8 スタンドアロンサーバーでの全エンドポイントに関するランタイム情報の表示
master という名前の物理ホストの server-one という名前のスタンドアロンサーバーですべてのエンドポイントに関する情報を表示します。
/host=master/server=server-one/deployment="*"/subsystem=webservices/endpoint="*":read-resource
例13.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"
}
}]
}