Benachrichtigungen des Schedulers empfangen

Der Scheduler generiert verschiedene Benachrichtigungsereignisse, wenn er eine Operation für eine Task ausführt. Diese Benachrichtigungsereignisse werden in diesem Artikel beschrieben.

Informationen zu diesem Vorgang

Im Folgenden werden verschiedene Benachrichtigungsereignisse aufgelistet, die von einem Scheduler generiert werden, wenn er eine Task ausführt:
Scheduled
Es wurde eine Task geplant.
Purged
Eine Task wurde permanent aus dem persistenten Speicher gelöscht.
Suspended
Eine Task wurde ausgesetzt.
Resumed
Eine Task wurde wiederaufgenommen.
Complete
Eine Task wurde ausgeführt. Falls es sich um eine wiederkehrende Task handelt, wurden alle Wiederholungen durchgeführt.
Cancelled
Eine Task wurde abgebrochen. Sie wird nicht erneut ausgeführt.
Firing
Die Ausführung einer Task wird vorbereitet.
Fired
Die Task wurde ausgeführt.
Fire failed
Die Task konnte nicht ausgeführt werden.

Zum Empfangen von Benachrichtigungsereignissen müssen Sie die Methode "setNotificationSink()" der Schnittstelle "TaskInfo" aufrufen, bevor Sie die Task erstellen. Mit der Methode "setNotificationSink()" können Sie die Session-Bean als Callback-Routine und eine Maske angeben, die die zu generierenden Ereignisse einschränkt.

Vorgehensweise

  1. Eine NotificationSink-Session-Bean erstellen Erstellen Sie eine kontextunabhängige Session-Bean, die die Methode "handleEvent()" in der fernen Schnittstelle "com.ibm.websphere.scheduler.NotificationSink" implementiert. Die Methode "handleEvent()" wird aufgerufen, wenn die Benachrichtigung generiert wird. Die Home- und fernen Schnittstellen können wie folgt im Implementierungsdeskriptor der Bean definiert werden:
    com.ibm.websphere.scheduler.NotificationSinkHome
    com.ibm.websphere.scheduler.NotificationSink

    Die Schnittstelle "NotificationSink" definiert die folgende Methode:

    public void handleEvent(TaskNotificationInfo task) throws java.rmi.RemoteException;
  2. Geben Sie die NotificationSink-Session-Bean an, bevor Sie die Task mit der API-Methode "setNotificationSink()" der Schnittstelle "TaskInfo" an den Scheduler übergeben.
    Wenn Sie die MBean-API WASScheduler für die Definition der NotificationSink verwenden, muss der JNDI-Name der vollständig qualifizierte globale JNDI-Name sein. Suchen und konfigurieren Sie mit einer JSP-Datei, einem Servlet oder einer EJB-Komponente die NotificationSink in der Task, wie im folgenden Codebeispiel dargestellt:
    TaskInfo taskInfo = ...
    Object o = new InitialContext().lookup("java:comp/env/ejb/NotificationSink");
    NotificationSinkHome home = (NotificationSinkHome )javax.rmi.PortableRemoteObject.narrow(o,NotificationSinkHome.class);
    taskInfo.setNotificationSink(home,TaskNotificationInfo.ALL_EVENTS);
    Sie können die Session-Bean für NotificationSink-Callback auch, wie im folgenden JACL-Scripting-Beispiel gezeigt, mit dem Tool "wsadmin" definieren:
    # Globalen JNDI-Namen der NotificationSinkHome verwenden
    # Annehmen, dass bereits ein TaskInfo-Objekt erstellt wurde...
    $taskInfo setNotificationSink “ejb/MyNotificationSink”
  3. Geben Sie die Ereignismaske an. Die Ereignismaske wird als Integer-Bitmap mit ganzen Zahlen angegeben. Sie können eine individuelle Maske, wie z. B. TaskNotificationInfo.CREATED für das Empfangen bestimmter Ereignisse, TaskNotificationInfo.ALL_EVENTS für das Empfangen aller oder einer Kombination bestimmter Ereignisse, angeben. Wenn Sie Java verwenden, könnte Ihr Script wie folgt aussehen:
    int eventMask = TaskNotificationInfo.FIRED | TaskNotificationInfo.COMPLETE;
    taskInfo.setNotificationSink(home,eventMask);
    Wenn Sie JACL verwenden, könnte Ihr Script wie folgt aussehen:
    # Ereignismaske auf der Basis zweier Ereigniskonstanten setzen
    set eventmask [expr [java::field com.ibm.websphere.scheduler.TaskNotificationInfo FIRED] + [java::field com.ibm.websphere.scheduler.TaskNotificationInfo COMPLETE]]
    
    # NotificationSink basierend auf dem globalen JNDI-Namen UND der Ereignismaske setzen.
    # Anmerkung: Sie müssen die vollständige Methodensignatur verwenden, weil der
    # Methodenauflöser nicht immer die richtige Methode bestimmen kann.
    $taskInfo {setNotificationSink String int} "ejb/MyNotificationSink" $eventmask

Ergebnisse

Sie haben eine NotificationSink-Bean in einem TaskInfo-Objekt definiert, die Sie mit der Methode "create" an einen Scheduler übergeben können.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsch_usenotificationsink
Dateiname:tsch_usenotificationsink.html