adshjavaコマンド(Javaのバッチアプリケーションを実行する)【Windows,Linux,AIX,HP-UX限定】
形式
- uCosminexus Application Serverのスケジューリング機能を使用する場合
adshjava [-grp スケジュールグループ名] -java [[Javaオプション]...] Javaアプリケーションクラス名 [[mainメソッドに渡す引数]...]
- uCosminexus Application Serverのスケジューリング機能を使用しない場合
adshjava -srv バッチサーバ名 -java [[Javaオプション]...] Javaアプリケーションクラス名 [[mainメソッドに渡す引数]...]
機能
adshjavaコマンドの指定に従って,uCosminexus Application Serverと連携してJavaのバッチアプリケーションを実行します。このコマンドの指定内容は,uCosminexus Application Serverのcjexecjobコマンドの引数に指定されてcjexecjobコマンドが実行されます。ジョブの強制終了を検知したときには,adshjavaコマンドがcjkilljobコマンドを実行してJavaのバッチアプリケーションを自動的に停止します。
JP1/Advanced Shellのジョブが強制終了すると,Javaのバッチアプリケーションも強制終了されます。
強制終了時にJavaのバッチアプリケーションを自動的に強制停止できる条件を次に示します。
強制停止できる条件(2回目以降を除く) |
Windows |
Linux,AIX,HP-UX |
---|---|---|
JP1/AJSからの強制終了 |
○ |
○ |
Ctrl+C |
○ |
○ |
Ctrl+break |
× |
○ |
コンソールを閉じる |
× |
○ |
adshexecコマンドプロセスへの終了シグナル※1送信 |
− |
○ |
adshjavaコマンドプロセスへのSIGTERM送信 |
− |
○ |
adshjavaコマンドプロセスへのSIGINT送信 |
− |
○ |
adshexecのデバッガのquitコマンドで中断 |
−※2 |
○ |
Javaのバッチアプリケーションの実行方法として,uCosminexus Application Serverのスケジューリング機能の使用有無を選択できます。
-
スケジューリング機能を使用しない場合
Javaのバッチアプリケーションは,指定したバッチサーバで実行されます。
-
スケジューリング機能を使用する場合
Javaのバッチアプリケーションは,Component Transaction Monitorによって振り分けられたバッチサーバで実行されます。この場合,JavaのバッチアプリケーションのジョブIDは次の形式で生成します。
ADSH時刻プロセスID
- 時刻
-
1970年1月1日午前0時からの経過秒数とナノ秒数を16進数で示した16文字の英数字。英字は大文字。
- プロセスID
-
16進数で示した8桁のプロセスID(コマンドのプロセスID)。英字は大文字。
このコマンドを実行できるユーザーは次のとおりです。詳細については,マニュアル「Cosminexus V9 アプリケーションサーバ リファレンス コマンド編」のcjexecjobコマンドまたはcjkilljobコマンドの記述を参照してください。権限がない場合,cjexecjobコマンドまたはcjkilljobコマンドがエラー終了します。
-
Windowsの場合
Administrators権限または管理者特権を持つユーザー
-
Linux,AIX,HP-UXの場合
バッチサーバを起動したComponent Container管理者,またはスーパーユーザー
引数
- -grp スケジュールグループ名
-
uCosminexus Application ServerのComponent Transaction Monitorが,Javaのバッチアプリケーションの実行をスケジューリングするときに割り当てるバッチサーバのグループ名を指定します。バッチサーバのグループ名は63バイト以内で指定します。
このオプションは,-javaオプションよりも前に指定してください。
スケジュールグループ名の長さはチェックされますが,それ以外のチェックはされないで,cjexecjobコマンド,cjkilljobコマンドの引数に指定されます。
- -srv バッチサーバ名
-
Javaのバッチアプリケーションを実行する,uCosminexus Application Serverのバッチサーバ名を255バイト以内で指定します。
このオプションは,-javaオプションよりも前に指定してください。
バッチサーバ名の長さはチェックされますが,それ以外のチェックはされないで,cjexecjobコマンド,cjkilljobコマンドの引数に指定されます。
- -java
-
このオプション以降の指定内容が,そのままuCosminexus Application Serverのcjexecjobコマンドに渡されます。
このオプション以降に指定した内容は,一つも指定がない場合を除いてadshjavaコマンドではエラーチェックされません。cjexecjobコマンドでのチェック処理に任せます。
- Javaオプション
-
JavaVMの起動オプションを指定します。指定方法については,マニュアル「Cosminexus V9 アプリケーションサーバ リファレンス コマンド編」を参照してください。
#-adsh_fileコマンド,#-adsh_file_tempコマンド,または#-adsh_spoolfileコマンドで割り当てたファイルは,このオプションで「-Dシステムプロパティ名=${ファイル定義名}」を記述することで,システムプロパティ経由でファイル名をJavaのバッチアプリケーションに渡せます。
- Javaアプリケーションクラス名
-
パッケージ名を含めたJavaアプリケーションのクラス名を指定します。Javaアプリケーションクラス名については,マニュアル「Cosminexus V9 アプリケーションサーバ リファレンス コマンド編」のcjexecjobコマンドの記述個所を参照してください。
- mainメソッドに渡す引数
-
Javaアプリケーションのmainメソッドに渡す引数を指定します。mainメソッドに渡す引数については,マニュアル「Cosminexus V9 アプリケーションサーバ リファレンス コマンド編」のcjexecjobコマンドの記述個所を参照してください。
終了コード
終了コード |
発生条件 |
意味 |
---|---|---|
0※1 |
public static int main(String[])メソッドから返された値が0 |
public static int main(String[])メソッドを使用した場合に返されます。 |
System.exit(),Runtime.halt(),Runtime.exit()の引数に指定した値が0 |
System.exit(),Runtime.halt(),Runtime.exit()を使用した場合に返されます。 |
|
cjexecjobコマンドの戻り値が0 |
public static void main(String[])メソッドを使用して正常終了しました。 |
|
1※2 |
adshjavaコマンドの処理の要因で終了 |
adshjavaコマンドが強制終了しました。 |
2※2 |
adshjavaコマンドの処理の要因で終了 |
adshjavaコマンドの処理でエラーが発生しました。 強制終了処理でcjkilljobコマンドの起動に失敗すると1になることがあります。 |
public static int main(String[])メソッドからreturnした値+15※1※3 |
public static int main(String[])メソッドから返された値が1以上 |
public static int main(String[])メソッドを使用した場合に返されます。 |
System.exit(),Runtime.halt(),Runtime.exit()の引数に指定した値+15※1※3 |
System.exit(),Runtime.halt(),Runtime.exit()の引数に指定した値が1以上 |
System.exit(),Runtime.halt(),Runtime.exit()を使用した場合に返されます。 |
cjexecjobコマンドの戻り値+15※1※3 |
cjexecjobコマンドの戻り値が1 |
Javaのバッチアプリケーションの実行に失敗しました。または,Javaのバッチアプリケーションを強制終了しました。 |
public static int main(String[])メソッドからreturnした値※1※4 |
public static int main(String[])メソッドから返された値が負数(Windows限定。UNIXは下8ビットがRCとして採用される) |
public static int main(String[])メソッドを使用した場合に返されます。 |
System.exit(),Runtime.halt(),またはRuntime.exit()の引数に指定した値※1※4 |
System.exit(),Runtime.halt(),またはRuntime.exit()の引数に指定した値が負数(Windows限定。UNIXは下8ビットがRCとして採用される) |
System.exit(),Runtime.halt(),またはRuntime.exit()を使用した場合に返されます。 |
17 |
cjexecjobコマンドの起動に失敗 |
cjexecjobコマンドの起動が失敗した場合に返されます。 |
注意事項
-
コマンドを実行する前に,スケジューリング機能の使用有無に応じたバッチサーバを起動しておく必要があります。
-
このコマンドはuCosminexus Application Serverのcjexecjobコマンド,cjkilljobコマンドを使用します。そのため,cjexecjobコマンド,cjkilljobコマンドが実行できる環境で実行する必要があります。
-
このコマンドをバックグラウンドで実行しても,adshexecコマンドはこのコマンドの終了を待って終了します。
-
cjexecjobコマンドおよびcjkilljobコマンドに渡す引数は,スケジュールグループ名とバッチサーバ名の長さだけをチェックして,そのままcjexecjobコマンドまたはcjkilljobコマンドに渡されます。そのため,不当な値を指定すると,cjexecjobコマンドまたはcjkilljobコマンドがエラーになります。
-
Windowsでは,ユーザーが事前にcjexecjobコマンドおよびcjkilljobコマンドのパスをPATH環境変数に設定しておく必要があります。
-
このコマンドは,adshexecコマンドのジョブ定義スクリプトから実行してください。adshexecコマンドのジョブ定義スクリプトから実行しないと,UNIXではジョブの強制終了時にJavaのバッチアプリケーションの停止処理ができません。また,Windowsでは実行できません。
-
-grpオプションと-srvオプションを同時に指定した場合,コマンドの解析エラーになります。
-
Javaのバッチアプリケーションはバッチサーバで非同期に実行します。このため,Javaのバッチアプリケーションの実行結果(標準出力,標準エラー出力)は,adshjavaコマンドの実行結果として参照できません。
-
Javaのバッチアプリケーションの作成時の注意事項については,マニュアル「Cosminexus V9 アプリケーションサーバ 機能解説 拡張編」を参照してください。
-
TRAP_ACTION_SIGTERMパラメーターでTERMを指定した場合,またはUNIX版でAUTOを指定してJP1/AJSからジョブを起動した場合は,trapコマンドによる動作定義にadshjavaコマンドを指定しないでください。
使用例
-
スケジューリング機能を使用する場合
#-adsh_file INPUT "/files/file01" #-adsh_file_temp TMP001 #-adsh_spoolfile SYSLIST adshjava -grp JOBGROUP -java -DINPUT=${INPUT} -DTMP001=${TMP001} -DSYSLIST=${SYSLIST} com.hitachi.mypackage.MyBatchApp
この例では,#-adsh_file,#-adsh_file_temp,および#-adsh_spoolfileで割り当てたファイル名をシステムプロパティでJavaのバッチアプリケーションに渡しています。#-adsh_file,#-adsh_file_temp,および#-adsh_spoolfileで割り当てるファイル名は,ファイル環境変数定義名に指定した環境変数に設定されます。
このadshjavaコマンドを実行すると,次のcjexecjobコマンドが実行されます。
cjexecjob JOBGROUP -jobID ジョブID -DINPUT=${INPUT} -DTMP001=${TMP001} -DSYSLIST=${SYSLIST} com.hitachi.mypackage.MyBatchApp
ジョブIDはadshjavaコマンドが生成したジョブIDです。
${環境変数名}はそれぞれファイル名を示します。
-
スケジューリング機能を使用しない場合
#-adsh_file INPUT "/files/file01" #-adsh_file_temp TMP001 #-adsh_spoolfile SYSLIST adshjava -srv MyBatchServer -java -DINPUT=${INPUT} -DTMP001=${TMP001} -DSYSLIST=${SYSLIST} com.hitachi.mypackage.MyBatchApp
#-adsh_file,#-adsh_file_temp,および#-adsh_spoolfileで割り当てたファイル名をシステムプロパティでJavaのバッチアプリケーションに渡しています。#-adsh_file,#-adsh_file_temp,および#-adsh_spoolfileで割り当てるファイル名は,ファイル環境変数定義名に指定した環境変数に設定されます。
このadshjavaコマンドを実行すると,次のcjexecjobコマンドが実行されます。
cjexecjob MyBatchServer -DINPUT=${INPUT} -DTMP001=${TMP001} -DSYSLIST=${SYSLIST} com.hitachi.mypackage.MyBatchApp
${環境変数名}はそれぞれファイル名を示します。