1.16. Webサービス

WebOTX Webサービスのコンフィグレーションについて説明します。

1.16.1. Web サービス(JAX-WS)の設定

JAX-WS に関する設定について説明します。

1.16.1.1. タイムアウト設定

JAX-WSクライアントはサーバへの接続に関するタイムアウト時間を設定できます。 この機能を利用することで、一定時間応答のないサーバなどから強制的に切断して、次の処理に移行することができます。

表1.16.1.1-1
システムプロパティ 説明 既定値
com.nec.webotx.webservice.xml.ws.connect.timeout

クライアントがサーバとのコネクションを確立するまでの待ち時間(ミリ秒)を指定します。 例えばサーバが停止している時など、接続が遅延するような場合に中断させることができます。 0は待ち続けます。負の値は無視されます。

30000(ミリ秒)
com.nec.webotx.webservice.xml.ws.request.timeout

リクエストに対するレスポンス返却までの待ち時間(ミリ秒)を設定します。 サーバの高負荷などで遅延するような場合に中断したい場合に利用できます。 0は待ち続けます。 負の値は無視されます。

300000(ミリ秒)
メモ

Javaのシステムプロパティの設定方法は以下を参照してください。

エージェントプロセスで動作する場合

ドメイン構築・基本設定ガイド > 3. ドメイン > 3.8. Java VMオプションの設定

Standard/Enterpriseのプロセスグループで動作する場合

ドメイン構築・基本設定ガイド > 7. WebOTXの内部サービス > 7.1. TPシステム > 7.1.3. 操作・状態確認(プロセスグループ) > 7.1.3.2. 設定の変更

タイムアウトの設定はコード内で行うことも可能です。コードとプロパティ両方で設定されている場合、コード内で設定している値を優先します。 詳しい設定方法については、 [ アプリケーション開発ガイド(Java EE) > 1. Webサービスアプリケーションの開発 > 1.2. プログラミング・開発ガイド > 1.2.5. Webサービスのカスタマイズ > 1.2.5.1. JAX-WS準拠Webサービスのカスタマイズ ] を参照してください。

JDKのHTTPタイムアウト設定のプロパティ sun.net.client.defaultConnectTimeout、sun.net.client.defaultReadTimeoutは指定されていても影響ありません。


1.16.2. JAX-RPC Web サービスのカスタマイズ

WebOTX JAX-RPC Webサービスのカスタマイズ方法について説明します。

1.16.2.1. タイムアウト設定

JAX-RPCクライアントはサーバへの接続に関するタイムアウト時間を設定できます。 この機能を利用することで、一定時間応答のないサーバなどから強制的に切断して、次の処理に移行することができます。

タイムアウトの設定方法は3種類あります。

  1. WebOTX Webサービス(JAX-RPC)のシステムプロパティ
  2. コード内でのsetterメソッド
  3. JDK標準のシステムプロパティ

Memo
通常、接続タイムアウトはサーバ側の設定により制御されます。3.の設定についてはWebOTX V8.1以前のJAX-RPCエンジンでも利用できます。

複数の設定を行った場合、以下の優先順位で設定が採用されます。複数の設定を行った場合、優先度の高いものが使用されます。優先度は高いものから以下の順になります。

 

  1. WebOTX Webサービス(JAX-RPC)のシステムプロパティ

java実行時にシステムプロパティとして以下を設定することで、HTTPタイムアウトの制御ができます。3.JDKのタイムアウト値と違い、接続するセッションで設定を行っているため他のプログラムへの影響はありません。

表1.16.2.1-1
システムプロパティ名 内容
com.nec.webotx.webservice.http.connect.timeout Webサービスとの接続までの待ち時間です。
com.nec.webotx.webservice.http.read.timeout Webサービスに接続してから応答を待っている時間です。

引数に含める単位はミリ秒です。0を設定した場合、接続を維持してサーバからの応答を待ち続けます。負の値は設定できません。負の値を設定したときは設定が無視されます。

com.nec.webotx.webservice.http.connect.timeoutはクライアントがサーバに接続してコネクションを確立するまでのタイムアウト時間です。 例えばサーバが停止している時など、接続に反応しない場合に何秒でタイムアウトするかを設定できます。

com.nec.webotx.webservice.http.read.timeoutはcom.nec.webotx.webservice.http.connect.timeoutと異なり、接続・リクエスト送信後にレスポンスが返却されるまでの待ち時間を設定できます。 リクエストを送ってもサーバの負荷が高すぎて反応がない場合、強制的に接続を切断したい場合などに利用できます。

実行例
[foo@webotx ~]$ java -Dcom.nec.webotx.webservice.http.connect.timeout=10000 -Dcom.nec.webotx.webservice.http.read.timeout=30000 test.Main

この例の場合、サーバへの接続待ち合わせが10秒、接続してからレスポンスメッセージを受信するまで30秒待ちます。

 

  1. コード内でのsetterメソッド

WebOTX Developerのウィザード、またはwscompileコマンドで生成されるStubインスタンスに対して、以下のメソッドを実行することでタイムアウト値を設定できます。

表1.16.2.1-2
メソッド名 内容
_setConnectTimeout(int timeOut) Webサービスとの接続までの待ち時間です。
_setReadTimeout(int setReadout) Webサービスに接続してから応答を待っている時間です。

引数に含めるintの単位はミリ秒です。0を設定した場合接続を維持してサーバからの応答を待ち続けます。 負の値は設定できません。負の値を設定したときは設定が無視されます。

setConnectTimeoutはクライアントがサーバに接続してコネクションを確立するまでのタイムアウト時間です。 例えばサーバが停止している時など、接続に反応しない場合に何秒でタイムアウトするかを設定できます。

setReadTimeoutはsetConnectTimeoutと異なり、接続・リクエスト送信後にレスポンスが返却されるまでの待ち時間を設定できます。リクエストを送ってもサーバの負荷が高すぎて反応がない場合、強制的に接続を切断したい場合などに利用できます。

設定例
MessageTest_PortType_Stub stub = (MessageTest_PortType_Stub) new MessageTest_Service_Impl().getMessageTestPort();
stub._setConnectTimeout(10000);←追記
stub._setReadTimeout(10000);←追記
stub._setProperty(javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY, url);
binding = (MessageTest_PortType)stub;

Caution
WebOTX V8.1以前のバージョンのWebOTX Developerで作成したソースコードを流用している場合、内容が異なるためStubインスタンスにメソッドを記述できません。設定例を参考にStubインスタンスを書きかえるか、プロジェクトを再作成してください。

 

  1. JDK標準のシステムプロパティ

java実行時にシステムプロパティとして以下を設定することで、HTTPタイムアウトの制御ができます。

表1.16.2.1-3
システムプロパティ名 内容
sun.net.client.defaultConnectTimeout Webサービスとの接続までの待ち時間です。
sun.net.client.defaultReadTimeout Webサービスに接続してから応答を待っている時間です。

引数に含める単位はミリ秒です。初期値は-1(設定なし)です。0を設定した場合接続を維持してサーバからの応答を待ち続けます。
この値の詳細はSun JDKに記載されています。「JDK 5.0 ドキュメント」-「ネットワーク機能」-「ネットワークプロパティ」

実行例
[foo@webotx ~]$ java -Dsun.net.client.defaultConnectTimeout=15000 -Dsun.net.client.defaultReadTimeout=20000 test.Main

この例の場合、サーバへの接続待ち合わせが15秒、接続してからレスポンスメッセージを受信するまで20秒待ちます。

Caution
これらの設定はJAX-RPCクライアントが実行されるJVM全体へ設定されます。他にHTTPプロトコルで接続するプログラムがある場合、影響を受ける場合がありますので注意してください。
例えば、JAX-RPCクライアントをServlet上で動作せる時、動作するWebOTXドメインのプロパティに設定した場合にHTTPクライアントとして動作するプログラム(Servlet, EJBなど)全体に反映されます。


1.16.3. SAAJの設定

SAAJ に関する設定について説明します。

1.16.3.1. タイムアウト設定

SOAPクライアントはサーバへの接続に関するタイムアウト時間を設定できます。 この機能を利用することで、一定時間応答のないサーバなどから強制的に切断して、次の処理に移行することができます。

表1.16.3.1-1
システムプロパティ 説明 既定値
com.nec.webotx.webservice.xml.messaging.saaj.connect.timeout

クライアントがサーバとのコネクションを確立するまでの待ち時間(ミリ秒)を指定します。 例えばサーバが停止している時など、接続が遅延するような場合に中断させることができます。 0は待ち続けます。負の値は無視されます。

30000(ミリ秒)
com.nec.webotx.webservice.xml.messaging.saaj.request.timeout

リクエストに対するレスポンス返却までの待ち時間(ミリ秒)を設定します。 サーバの高負荷などで遅延するような場合に中断したい場合に利用できます。 0は待ち続けます。 負の値は無視されます。

300000(ミリ秒)
メモ

Javaのシステムプロパティの設定方法は以下を参照してください。

エージェントプロセスで動作する場合

ドメイン構築・基本設定ガイド > 3. ドメイン > 3.8. Java VMオプションの設定

Standard/Enterpriseのプロセスグループで動作する場合

ドメイン構築・基本設定ガイド > 7. WebOTXの内部サービス > 7.1. TPシステム > 7.1.3. 操作・状態確認(プロセスグループ) > 7.1.3.2. 設定の変更

タイムアウトの設定はコード内で行うことも可能です。コードとプロパティ両方で設定されている場合、コード内で設定している値を優先します。 詳しい設定方法については、 [ アプリケーション開発ガイド(Java EE) > 1. Webサービスアプリケーションの開発 > 1.2. プログラミング・開発ガイド > 1.2.5. Webサービスのカスタマイズ > 1.2.5.1. JAX-WS準拠Webサービスのカスタマイズ ] を参照してください。

JDKのHTTPタイムアウト設定のプロパティ sun.net.client.defaultConnectTimeout、sun.net.client.defaultReadTimeoutは指定されていても影響ありません。


1.16.4. WS-ReliableMessaging Webサービスの設定

以下はMOで設定可能な WebOTX WS-ReliableMessaging 設定項目の一覧です。

Dottedname : server.web-service.ws-rm

表1.16.4-1
属性名
(attribute-name)
get / set コマンドで指定する属性名 説明 既定値
JNDIサーバへの登録名
[RmJndiName]
rm-jndi-name WS-ReliableMessagingで使用するDBのJNDIサーバへの登録名を指定します。
1.8.JDBCデータソース」で設定したJDBCデータソースと対応させる必要があります。
jdbc/WSRM
メッセージ送信の最大スレッド数
[RmMaxThreads]
rm-max-threads WS-ReliableMessaging メッセージの送信で使用する最大スレッド数を指定します。有効な値は0より大きい整数です。 10
DBに格納する最大メッセージサイズ
[RmMaxMessageSize]
rm-max-message-size DBに格納する最大メッセージサイズをMB単位の整数で指定します。
メッセージサイズはSOAPメッセージのエンベロープのサイズにより算出し、プロトコル バインディング ヘッダは計算に含めません。
最大メッセージサイズより大きいメッセージを受信した場合、サービスはメッセージを破棄しエラー終了します。
0の場合は無制限となります。
4
デッドキュー保存期間
[RmDeadQueueStoragePeriod]
rm-dead-queue-storage-period メッセージをデッドキューに保存する期間を分単位で指定します。デッドキューの最終更新日時を起点に、保存期間を過ぎた場合にデッドキューが削除されます。有効な値は0より大きい整数です。 43200(30日)
テーブル名の接頭辞
[RmTableNamePrefix]
rm-table-name-prefix WS-ReliableMessagingで作成するテーブルの接頭辞を8文字以内で指定します。ユーザドメイン毎にWS-ReliableMessagingで使用するテーブルを分けたい場合に使用します。 RMTABLES