Beenden eines Auftrags aus dem Java-CodeDataStage)
Sie können ein Ausnahmeklassenobjekt oder ein ConnectorException-Klassenobjekt auslösen oder die Methode 'Logger.fatal()' aufrufen, um einen Job zu stoppen, bevor er natürlich beendet wird.
Auslösen eines Objekts der Klasse Exception
Sie können die Klasse Exception (java.lang.Exception)
oder deren Unterklassenobjekt aus Ihrer Prozessor-Implementierung verwenden, um einen Auftrag anzuhalten.
Das folgende Beispiel zeigt Java™-Code, der eine einfache Berechnung durchführt, um einen Preis zu ermitteln. Ist der auf ' count
gesetzte Wert Null, löst der Java-Code die ' java.lang.ArithmeticException
-Ausnahme aus und protokolliert die Meldung:Divide by zero.
public void process() throws Exception
{
int count = 0;
int total = 1000;
…
int price = total / count;
}
Der Java-Code kann auch ein ' ArithmeticException
mit einer von Ihnen angegebenen Nachricht erstellen und es werfen, um einen Auftrag zu beenden.
public void process() throws Exception
{
…
if (result < 0)
{
throw new ArithmeticException("An exception occurred. result=" + result);
}
}
Auslösen eines Objekts der Klasse ConnectorException
Sie können das Klassenobjekt 'ConnectorException (com.ibm.is.cc.javastage.api.ConnectorException)' aus der Prozessorimplementierung verwenden, um einen aktiven Job anzuhalten oder um eine Operation zur Entwurfszeit mit einer Nachricht zu beenden.
Verwenden Sie die Klasse ConnectorException
, um Nachrichten zu protokollieren, die die Stack-Trace-Informationen nicht enthalten, und um diesen Nachrichten auch Nachrichten-IDs zuzuordnen.
Im folgenden Beispiel konstruiert der Java-Code ein ' ConnectorException
und wirft es aus, nachdem er die Methode Logger.setComponentID() aufgerufen hat. Das Connector-Framework fängt die Ausnahme ab und protokolliert die FehlermeldungAn exception
occurred. result=-1und stoppt den Auftrag. Die Nachrichten-ID lautet 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);
}
}
…
}
Methode Logger.fatal() aufrufen
Sie können einen Job beenden, indem Sie die Methode 'com.ibm.is.cc.javastage.api.Logger.fatal()' von Ihrer Prozessorimplementierung aus aufrufen.
Wenn Java-Code die Methode Logger.fatal() aufruft, gibt der Auftrag die Kontrolle nicht an den Java-Code zurück. Die Methode Processor.terminate()
, mit der der Job gestoppt wird, kann nicht aufgerufen werden. Dies kann zu einem Problem beim Neustart des Jobs führen.
Wenn Ihr Java-Code einen Abbruchprozess erfordert, verwenden Sie das ' ConnectorException
oder ein beliebiges anderes Exception-Objekt, da die Methode Processor.terminate() mit dem auf true gesetzten Argument ' isAborted
aufgerufen wird.
Das folgende Beispiel zeigt, wie Java-Code die Methode Logger.fatal() aufruft. Der Auftrag endet und die NachrichtMy job terminates abnormallywird im Auftragsprotokoll mit der Nachrichten-ID IIS-CONN-JAVA-00015 protokolliert.
Logger.fatal("My job terminates abnormally.");