Batch ServerはWebOTXのユーザドメインとしてバッチドメインを構成します。
バッチドメインに対する運用操作はWebOTX Application Serverと同様に、otxadminコマンドやWebOTX 統合運用管理ツールから操作することができます。
Batch Serverへのジョブ実行要求はバッチドメイン内のエージェントに対して行い、エージェントからバッチコンテナプロセスにそのジョブ実行要求を送信することで、バッチコンテナプロセス上でのジョブ実行を可能にしています。

バッチドメインは、WebOTX Application Serverと同様の下記サービスによって構成されます。
| サービスの名称 | Express Edition | Standard Edition |
|---|---|---|
| JNDIサービス | ○ | ○ |
| Object Brokerサービス | ○ | ○ |
| Transactionサービス | × | ○ |
バッチコンテナプロセスは、Transactionサービスとの連携を行うことでバッチコンテナプロセス内での分散トランザクションの実行をサポートしています。
上記それぞれのサービスの詳細はWebOTX Application Serverのマニュアルを参照してください。
バッチドメインを管理するエージェントのことを、WebOTX Application Serverのユーザドメインエージェントと区別しバッチドメインエージェントと呼びます。
Batch Serverでは、バッチコンテナという単位でプロセスの起動・停止の制御や、ジョブ実行の振分制御を実施しています。各バッチコンテナはあらかじめ設定されたプロセス多重度にしたがって、複数のプロセスを起動します。これら個別のプロセスのことをバッチコンテナプロセスと呼びます。

バッチコンテナプロセスにはバッチコンテナ毎のプロセス識別子(末尾の_<ID>)が付与されます。このバッチコンテナプロセス識別子を利用して、個別のコンテナプロセスを意識した動作の確認や操作を行うことができます。
また、Batch Serverでは個別のバッチコンテナプロセスを特定するための完全名を規定しています。
バッチコンテナプロセス完全名
<バッチコンテナ名>_<プロセス識別子>
バッチドメインエージェントを開始してバッチドメインを起動します。
# otxadmin start-domain batchDomain1
ドメイン batchDomain1 を起動しています。しばらくお待ち下さい。
Redirecting output to /opt/WebOTX/domains/batchDomain1/logs/server.log
ドメイン batchDomain1 はクライアントからの要求を受け付ける準備ができており、追加のサービスがバックグラウンドで開始され ます。
ドメイン [batchDomain1] は実行中です : [WebOTX 8.40.00.00 (build xxxxxxxx)]
※ドメイン管理のために(JConsole のような)標準の JMX クライアントは次の JMXServiceURL に接続可能です :
[service:jmx:rmi:///jndi/rmi://xxxxxxxxx:6312/jmxrmi]
※ドメインは少なくとも次のポートを接続のために開放しています :
[6312].
#
バッチドメインの起動操作の詳細については、運用ガイド、および、コマンドリファレンスを参照してください。
バッチドメイン起動時に自動起動するバッチコンテナを指定することができます。
バッチドメインの起動と同時に起動するバッチコンテナを制限し、夜間バッチ等実際にジョブを実行する直前にバッチコンテナを起動するような運用も可能になります。
バッチドメイン起動時に自動起動が設定されている全てのバッチコンテナを起動します。全てのバッチコンテナプロセスの起動を待ち合わせてバッチドメインの起動コマンドは完了します。
Batch Serverのバッチコンテナプロセスは、バッチドメインエージェントプロセスのみが強制終了した場合であっても稼動し続ける可能性があります。
このようなバッチドメイン管理化のバッチコンテナプロセスが、バッチドメイン起動時に残存していた場合にバッチコンテナプロセスとバッチドメインエージェントの再接続を試みます。
OS起動時にバッチドメインを起動する場合、WebOTXの管理ドメインエージェントを経由してバッチドメインを起動します。
詳細はWebOTX Application Serverのマニュアルを参照してください。
Batch Serverでは、バッチコンテナプロセスの起動ユーザー変更機能やOSによるクライアントの認証を実現するため、バッチドメインエージェントを管理ユーザーにより起動します。
ただし、バッチコンテナプロセス起動ユーザーを変更する必要が無い場合等、いくつかの制限の中で、バッチドメイン起動ユーザーを一般ユーザーに変更することを許可しています。
例えば、bsadminユーザ(bsadminグループ)という一般ユーザをドメイン起動ユーザにする場合、
下記のようにAS_INSTALL/domainsディレクトリに書込み権を与え、さらに、DOMAIN_HOME以下全てのファイルの所有者を変更します。
下記は管理ユーザにより実行してください
# chmod o+w /opt/WebOTX/domains # chown -R bsadmin:bsadmin /opt/WebOTX/domains/batchsv1
その後、bsadmin ユーザで otxadmin start-domainを実行することで、一般ユーザによりバッチドメインを起動することができます。
バッチドメインを停止するにはバッチドメインエージェントを停止します。
# otxadmin stop-domain batchDomain1 ドメイン batchDdomain1 が停止しました。
バッチドメインの停止操作については、運用ガイド、および、コマンドリファレンスを参照してください。
バッチドメイン停止時には稼働中の全てのバッチコンテナプロセスを停止させます。稼働中のバッチコンテナプロセス上でジョブを実行中である場合、下記バッチドメインの停止モードを指定することで実行中のジョブの停止方法を決定することができます。
バッチドメインの起動状態を参照するには下記コマンドを実行します。
# otxadmin list-domains WebOTXAdmin running batchDomain1 running コマンド list-domains は正常に実行されました。
下記の設定を指定してバッチコンテナを追加します。
| 名前 | 既定値 | 説明 |
|---|---|---|
| コンテナ名 | − | 英数字のみ使用可能です。 (指定必須) |
バッチコンテナを追加すると下記ディレクトリが新たに生成されます。
| ディレクトリ名 | 説明 |
|---|---|
| DOMAIN_HOME/containers/<バッチコンテナ名>/ | コンテナ毎のクラスパスに設定等を格納するディレクトリです |
| DOMAIN_HOME/containers/<バッチコンテナ名>/<バッチコンテナプロセス完全名>/ | バッチコンテナプロセス毎の設定等を格納するディレクトリです。 また、各バッチコンテナプロセスはこのディレクトリをカレントディレクトリとして起動します。 |
| DOMAIN_HOME/containers/<バッチコンテナ名>/lib/* | コンテナプロセス内で動作するクラスローダが利用します |
バッチコンテナを削除します。
バッチコンテナの削除によってバッチコンテナ追加時に生成された情報やファイルが削除されます。
バッチコンテナを削除する場合、全てのバッチコンテナプロセスを停止させる必要があります。
バッチコンテナ削除時には、バッチコンテナ追加時に作成した下記ディレクトリは削除されません。
バッチコンテナ、および、バッチコンテナプロセスに対して下記設定を変更することができます。
| 名前 | 既定値 | バッチコンテナ単位 | バッチコンテナプロセス単位 | 説明 |
|---|---|---|---|---|
| バッチコンテナプロセス多重度 | 1 | ○ | × | 起動するバッチコンテナプロセスの多重度です |
| バッチコンテナプロセス所有者 | − | ○ | × | バッチコンテナプロセスのプロセス所有者を指定します。 設定が空の場合、バッチドメインエージェントと同一のユーザーでコンテナプロセスを起動します。 |
| Javaオプション | − | ○ | ○ | バッチコンテナプロセス起動時に指定するJavaオプションです。 バッチコンテナ、バッチコンテナプロセスの両方に設定を行った場合、同一のキーを使ったKEY=VALUEを指定した場合にのみ、バッチコンテナプロセスの設定で上書きします。キーが重複しない場合は結合された値が設定されます。 起動時のJavaオプションは |
| 環境変数 | − | ○ | ○ | バッチコンテナプロセス起動時に追加する環境変数です。 バッチコンテナ、バッチコンテナプロセスの両方に設定を行った場合、同一のキーを使ったKEY=VALUEを指定した場合にのみ、バッチコンテナプロセスの設定で上書きします。キーが重複しない場合は結合された値が設定されます。 |
| プロセスのカレントディレクトリ | − | × | ○ | バッチコンテナプロセス起動時のカレントディレクトリです。 |
バッチコンテナプロセスには必ず1つのWorkManagerを持ちます。ジョブの実行はWorkManagerによって管理されたスレッドを利用して実行されます。
コンテナプロセス内で構成するクラスローダの移譲設定を全てのコンテナ共通で設定することができます。
設定可能な項目は下記のとおりです。
バッチコンテナを起動することで、指定されたプロセス多重度分のバッチコンテナプロセスを起動することができます。
バッチコンテナの一部コンテナプロセスが停止しいている状態でバッチコンテナの起動指示を行った場合、起動状態を確認できないコンテナプロセスのみを起動します。
例えば、コンテナプロセス多重度が3の場合で、各コンテナプロセスが下記のような稼動状態にある場合にコンテナAの起動を指示すると、コンテナA_3のコンテナプロセスのみを起動します。
コンテナA_1 → 稼働中
コンテナA_2 → 稼働中
コンテナA_3 → 停止
各バッチコンテナプロセスは下記のようなJavaプロセスです。
${AS_JAVA}/bin/java ${FINAL_CONTAINER_VM_ARGS} ${LAUNCHER} ${MAIN_CLASS} コンテナ名 コンテナプロセス識別子
各要素には下記内容が設定されます。
| 名前 | 説明 |
|---|---|
| AS_JAVA | AS_INSTALL/config/asenv.conf で設定したJavaのインストールディレクトリを利用します。 |
| FINAL_CONTAINER_VM_ARGS | 下記の設定が順に連結されたものです。
|
| LAUNCHER | com.nec.webotx.batch.bootstrap.Launcher の固定値です。 |
| MAIN_CLASS | com.nec.webotx.batch.core.domain.container.BatchContainer の固定値です。 |
| コンテナ名 | 起動するバッチコンテナ名です。 |
| コンテナプロセス識別子 | 起動するバッチコンテナプロセスの識別子です。 |
例えば、jps コマンドを使うと下記のように表示され、コンテナプロセス(下記は"container1_1"の場合)のPIDを特定することができます。
# jps -m <PID> Launcher com.nec.webotx.batch.core.domain.container.BatchContainer container1 1
ジョブ実行するバッチコンテナはプロセスを多重化することができます。
プロセスを多重化することによって、プロセス障害が発生した場合の影響を極小化することができます。
コンテナプロセスの多重度は動的に変更することができます。
稼動状態のバッチコンテナに対してコンテナプロセス多重度を増加させた場合、増加分のコンテナプロセスを追加起動します。
例えば、コンテナプロセス多重度が3の場合で多重度を4に変更すると、下記のようにコンテナA_4を追加起動します。このとき、コンテナA_1〜3の状態に依らずコンテナA_4が追加されます。
コンテナA_1 → 稼働中
コンテナA_2 → 稼働中
コンテナA_3 → 稼働中
コンテナA_4 → 追加起動
また、稼動状態のバッチコンテナに対してコンテナプロセス多重度を減少させた場合、コンテナ識別子が末尾のコンテナプロセスからタイムアウト無しの通常停止モードでコンテナプロセスを個別に停止させます。
例えば、コンテナプロセス多重度が4の場合で多重度を3に変更すると、下記のようにコンテナA_4を停止させます。このとき、コンテナA_1〜3の状態によらずコンテナA_4が停止します。また、コンテナA_4のプロセス内で実行中の全てのジョブが終了するまでプロセスの停止は待機させられます。待機中の間、コンテナA_4に対する新たなジョブ実行要求は割り当てられなくなり、多重度変更による停止中には該当するバッチコンテナに対する多重度変更要求も受け付けられなくなります。
コンテナA_1 → 稼働中
コンテナA_2 → 稼働中
コンテナA_3 → 稼働中
コンテナA_4 → 通常停止
上記停止待ち状態の場合、コンテナプロセス多重度設定は変更後の3が表示されますが、コンテナプロセスの状態確認を行うとコンテナA_4の状態も表示されます。
多重度減少要求による、コンテナプロセス停止処理の待機にはタイムアウト時間が設定されません。終了を待機しているジョブを早期に終了させるためには、別途ジョブの終了コマンド等を利用してください。
コンテナプロセス起動ユーザーが指定されている場合、コンテナプロセスのプロセス所有者が指定されているユーザーになるようにプロセスを起動します。
ただし、バッチドメインエージェントプロセスが管理者権限を持たない一般ユーザーで起動されている場合、コンテナプロセスの起動エラーが発生します。
全てのバッチコンテナプロセスを停止させます。
バッチコンテナの停止処理には、以下の3つの停止モードがあります。
| 停止モード | 説明 |
|---|---|
| NORMAL | ノーマル停止モード 実行中のジョブが全て完了するのを待って、バッチコンテナを終了します。 |
| TRANSACTIONAL | トランザクショナル停止モード 実行中のジョブをTRANSACTIONALモードで停止し、バッチコンテナを終了します。 |
| FORCE | 強制停止モード 実行中のジョブをFORCEモードで終了し、バッチコンテナを終了します。 |
V8.41.03.00以降、強制停止モードの場合、コンテナの状態に関わらず停止処理を試みます。
強制停止失敗時には、コンテナプロセスの有無に関わらず、コンテナプロセスの状態はNOT_RUNNINGに遷移します。強制停止に失敗した場合、コンテナプロセスの有無を確認してください。強制停止に失敗したコンテナプロセスが存在している状態で、コンテナの起動させないでください。
バッチドメインエージェント内でバッチコンテナの状態を管理しています。
このバッチコンテナの状態は各バッチコンテナプロセスの状態から判断します。
バッチコンテナプロセス毎に下記の状態を持ちます。
Batch Serverの各コンポーネントは、バッチコンテナプロセスの状態に応じて処理を行います。
| 状態 | 説明 |
|---|---|
| NOT_RUNNING | バッチコンテナプロセスが停止している状態です。 |
| STARTING | バッチコンテナプロセスに対して開始要求を行った状態です。 |
| RUNNING | バッチコンテナプロセスの起動処理が完了し、バッチコンテナプロセスが正常に稼動しています。 この状態のバッチコンテナプロセスでは正常にジョブの実行要求に応じることができます。 |
| BUSY | バッチコンテナプロセス内のデフォルトのWorkManagerが持つスレッドプール内の全てのスレッドを利用中です。 この状態のバッチコンテナプロセスはジョブの実行要求を受け付けられない可能性があります(状態は一時的なもののため、実際に処理を実行しようとするタイミングでは、すでに空きスレッドが存在しジョブを実行できる可能性があります)。 |
| STOPPING | バッチコンテナプロセスに対して停止要求を行った状態です。 |
| UNKNOWN | バッチコンテナプロセスの状態が不明な状態です。 |
上記バッチコンテナプロセスの状態によってバッチコンテナの状態を下記のように定義しています。
| 状態 | 説明 |
|---|---|
| NOT_RUNNING | 多重度分全てのバッチコンテナプロセスが停止している状態です。 |
| STARTING | バッチコンテナの開始要求を受け付けた状態です。 一部のバッチコンテナプロセスによってはすでにSTARTING以外の状態に遷移している状況を含みます。 |
| NORMAL | バッチコンテナは正常に稼動しています。 多重度分全てのコンテナプロセスがRUNNING、または、BUSYで、一つ以上のバッチコンテナプロセスがRUNNINGな状況です。 |
| BUSY | 全てのバッチコンテナプロセスが最大限のジョブを実行しています。過負荷状態である可能性があります。 多重度分全てのバッチコンテナプロセスがBUSYな状況です。 |
| WARNING | 一部のバッチコンテナプロセスで処理を継続している状況を意味します。 一つ以上のバッチコンテナプロセスがRUNNING、または、BUSYで、それ以外のバッチコンテナプロセスのうち、NOT_RUNNINGやUNKNOWNとなったバッチコンテナプロセスが存在する状況です。 |
| STOPPING | バッチコンテナの停止要求を受け付けた状態です。 一部のバッチコンテナプロセスによってはすでにSTOPPING以外の状態に遷移している状況を含みます。 |
| UNKNOWN | 上記以外の条件で一つでもUNKNOWNなバッチコンテナプロセスが存在する状態です。 |
二つのバッチコンテナプロセスの状態と、バッチコンテナの状態の関係は以下のとおりです。
| NOT_RUNNING | STARTING | RUNNING | BUSY | STOPPING | UNKNOWN | |
|---|---|---|---|---|---|---|
| NOT_RUNNING | NOT_RUNNING | STARTING | WARNING | WARNING | STOPPING | UNKNOWN |
| STARTING | STARTING | STARTING | STARTING | STARTING | − | STARTING |
| RUNNING | WARNING | STARTING | NORMAL | NORMAL | STOPPING | WARNING |
| BUSY | WARNING | STARTING | NORMAL | BUSY | STOPPING | WARNING |
| STOPPING | STOPPING | − | STOPPING | STOPPING | STOPPING | STOPPING |
| UNKNOWN | UNKNOWN | STARTING | WARNING | WARNING | STOPPING | UNKNOWN |
STARTINGとSTOPPINGへの遷移はエージェント内の操作要求と同時に全てのコンテナプロセスの状態をまとめて書き換えます。そのため、あるコンテナプロセスの状態がSTARTING、または、STOPPINGで他のプロセスが異なる状態となるのはまだその処理途中であることを意味します。STARTING、または、STOPPINGのままとなっているコンテナプロセスの状態は、処理が完了するか、タイムアウトすることでバッチコンテナプロセスの状態が遷移し、最終的に別のバッチコンテナ状態へと遷移します。
バッチコンテナプロセスのライフサイクル(起動や停止のタイミング)にあわせて利用者が設定したクラスのメソッドを呼び出す機能を提供します。
WebOTXが提供するcom.nec.webotx.appserv.server.WebOTXLifecycleインタフェースを実装するか、com.nec.webotx.appserv.server.WebOTXLifecycleBaseを継承して独自のクラスを作成してください。
詳細はWebOTXライフサイクルモジュールのAPIリファレンスを参照してください。
ライフサイクルモジュールの実装クラスを梱包したJarファイルをバッチコンテナのクラスパスを設定し、
共通、または、バッチコンテナ毎の下記定義ファイルにライフサイクルモジュールの設定を行います。
バッチコンテナ毎の設定ファイルと、共通の設定ファイルが存在する場合、 バッチコンテナ毎のファイルに設定されたwebotx.batch.userLifecycle.merge プロパティに応じて 設定をマージします。
各設定ファイルに記載可能な設定項目は以下のとおりです。
| プロパティ名 | 既定値 | 説明 |
|---|---|---|
| webotx.batch.userLifecycle.<Num> | - | ライフサイクルモジュールを実装したクラスのFQCNを指定します。 Numには必ず数値を指定します。 |
| webotx.batch.userLifecycle.isFailureFatal | false | ライフサイクルモジュールのコールバック内で例外を返した場合に、 バッチコンテナプロセスを異常終了させるかどうかを設定します。 |
| webotx.batch.userLifecycle.merge | true | コンテナ単位の設定をマージするかどうかを指定します。 trueが指定されている場合、共通の設定に記載されたライフサイクルモジュールの一覧をマージします。 重複して指定されたFQCNは一つのみ有効になります。 この設定はコンテナ毎の設定ファイル(lifecycle.properties)でのみ有効です。 |
Batch Serverのドメインエージェントのプロセスが障害等により異常終了した場合、ジョブを実行中のコンテナプロセスは可能な限りジョブの実行を継続します。
ドメインを復旧させるには、障害の原因を取り除いた後に通常のドメイン起動操作を実施します。
このとき、すでに稼動中のコンテナプロセスに対して再接続し該当するドメインの管理化に復旧させます。
各ドメインは下記ディレクトリ構成になります。
| ディレクトリ名 | 説明 | ||
|---|---|---|---|
| DOMAIN_HOME | |||
| apps.internal | バッチアプリケーション管理の制御ファイル格納ディレクトリ | ||
| backup | ドメイン定義情報のバックアップ | ||
| bin | バッチコンテナプロセス起動コマンド格納用 | ||
| config | ドメイン定義情報格納用 | ||
| batch | Batch Server固有情報格納用 | ||
| containers | バッチコンテナ設定情報格納用 | ||
| defaultRepo | デフォルト設定のドメインが利用するDerby定義情報格納ディレクトリ | ||
| lib | ユーザライブラリ格納ディレクトリ | ||
| logs | ログ出力ディレクトリ | ||
| var | Batch Server制御情報格納ディレクトリ | ||
| addons | Batch Serverでは利用しません | ||
| applications | |||
| autodeploy | |||
| docroot | |||
| generated | |||
| session-store | |||
| stats | |||
| wojms | |||
バッチコンテナプロセス起動時に、プロセス毎の下記情報をログに記録しています。
バッチコンテナプロセスを起動する度に、下記ログファイルへ追記されます。
DOMAIN_HOME/logs/batch/<コンテナ名>/environments_<コンテナプロセス識別子>.log