Javaコードからのジョブの終了DataStage
Exception クラス・オブジェクトをスローするか、ConnectorException クラス・オブジェクトをスローするか、または Logger.fatal() メソッドを呼び出すと、ジョブが自然に終了する前にジョブを停止することができます。
Exceptionクラスのオブジェクトを投げる
Exception (java.lang.Exception)
クラスまたはそのサブクラス・オブジェクトをプロセッサー・インプリメンテーションから使用して、ジョブを停止することができます。
次の例では、Java™コードで基本的な計算を行い、価格を求めています。 count
にセットされた値がゼロの場合、Javaコードは'java.lang.ArithmeticException
例外をスローし、メッセージをログに記録する:Divide by zero.
public void process() throws Exception
{
int count = 0;
int total = 1000;
…
int price = total / count;
}
Javaコードは、指定したメッセージで'ArithmeticException
オブジェクトを構築し、それを投げてジョブを終了させることもできる。
public void process() throws Exception
{
…
if (result < 0)
{
throw new ArithmeticException("An exception occurred. result=" + result);
}
}
ConnectorExceptionクラスオブジェクトのスロー
ConnectorException(com.ibm.is.cc.javastage.api.ConnectorException) クラス・オブジェクトを使用して、実行中のジョブを停止したり、メッセージを使用して設計時操作を終了したりできます。
ConnectorException
クラスを使用して、スタック・トレース情報が含まれていないメッセージをログに記録し、それらのメッセージにメッセージ ID を割り当てることができます。
以下の例では、Logger.setComponentID(メソッドを呼び出した後、Javaコードが'ConnectorException
オブジェクトを構築し、スローしています。 コネクタフレームワークは例外をキャッチし、エラーメッセージをログに記録しますAn exception
occurred. result=-1と言って仕事を止める。 メッセージ ID は、IIS-CONN-MYCONN-00999 です。
public class MyConnector extends Processor
{
public MyConnector()
{
super();
Logger.setComponentID(“MYCONN”);
}
public void process() throws Exception
{
…
if (result < 0)
{
throw new ConnectorException(999, " An exception occurred. result=" + result);
}
}
…
}
Logger.fatal() メソッドの呼び出し
プロセッサー・インプリメンテーションから com.ibm.is.cc.javastage.api.Logger.fatal() メソッドを呼び出すことにより、ジョブを終了することができます。
JavaコードがLogger.fatal()メソッドを呼び出すと、ジョブはJavaコードにコントロールを返しません。 Processor.terminate()
メソッドは、ジョブを停止させることはできません。 この結果、ジョブの再始動中に問題が発生する可能性があります。
Javaコードで終了処理が必要な場合は、Processor.terminate()メソッドは、引数'isAborted
をtrueに設定して呼び出されるので、'ConnectorException
オブジェクトや他のExceptionオブジェクトを使用する。
次の例は、JavaコードでLogger.fatal()メソッドを呼び出しています。 仕事が終わり、メッセージMy job terminates abnormallyは、メッセージIDIIS-CONN-JAVA-00015でジョブ・ログに記録されます。
Logger.fatal("My job terminates abnormally.");