[CentOS6][SOS JobScheduler] Javaアプリケーションのジョブを実行する


Create: 2013/03/09
LastUpdate: 2013/03/27
[ メニューに戻る ]

下図の環境を使用します。
環境の詳細を知りたい場合は、メニューに戻って構築手順を参照してください。


ここでは、JOB1(上図)をJavaで作成し、 StandaloneJob として実行してみます。
手順については、「Reference Documentation - Explanation of a Job」を参考にしました。

1.テストアプリケーションの作成


Java でテスト用のアプリケーションを作成します。
/home/jobs/workspace/testJob.java のファイル名で、以下の内容とします。
import  java.io.*;

class TestJob {
    public static void main(String args[]){
        int i;
        System.out.println("TestJob running.");
        for( i = 0 ; i < args.length ; i++ )
            System.out.println("args[" + i + "]=" + args[i]);
    }
}
jobsユーザで、以下のようにしてコンパイルします。
$ cd ~/workspace
$ javac -cp . ./testJob.java
jobs ユーザで、以下のように実行すると、引数が表示されます。
$ java -cp . TestJob xxx
TestJob running.
args[0]=xxx

2.Language(shell)のジョブを登録&実行


まず、最初にshellで実行するようにジョブ登録してみます。


パラメータは下図のように "testParam=123456" と設定しました。


このジョブを 実行 した結果が以下のとおりです。パラメータ値が正しく表示されていることが確認できます。


3.Language(java)のジョブを登録&実行


上記2の設定を下図のようにjavaで実行するように変更します。なお、上記2で入力した[Script]タブのプログラムは消去しておきます。


このジョブを  実行 すると、下図のようにエラーになります。


以下のエラーメッセージが出力されていますが、JobSchedulerの内部APIを実装していないのが原因です。
Error: 2013-03-09 07:26:22 COM-80020009 DISP_E_EXCEPTION [begin] [] [Z-JAVA-105 Java exception java.lang.NoSuchFieldError("spooler"), method=GetFieldID [spooler], in Remote_module_instance_server::begin], method=call
Javaのアプリケーションを以下のように修正して、JobScheduler の内部APIを実装します。
import  java.io.*;
import sos.spooler.*;

class TestJob extends Job_impl {

    public boolean spooler_process() {
        String[] params = new String[1];
        params[0] = spooler_task.params().value("testParam");
        mainProc(params);
        return false;
    }

    public static void mainProc(String args[]){
        int i;
        System.out.println("TestJob running.");
        for( i = 0 ; i < args.length ; i++ )
            System.out.println("args[" + i + "]=" + args[i]);
    }
}
jobsユーザで、以下のようにしてコンパイルします。
$ cd ~/workspace
$ javac -cp .:/opt/sos-berlin.com/jobscheduler/scheduler_agent/lib/* ./testJob.java
これで、もう一度ジョブを実行すると、正常終了します。
下図は、実行結果です。



◆ 参考ドキュメント