Befehlsgruppe "EJB"

Die Befehlsgruppe "EJB" für das Objekt AdminTask stellt Befehle für die Bearbeitung von Enterprise-Beans bereit.

removeAutomaticEJBTimers

Anwendungen oder Module weisen den Anwendungsserver mit Annotationen oder XML an, automatisch EJB-Zeitgeber zu erstellen.

Automatisch erstellte Zeitgeber werden persistent in der Scheduler-Instanz gespeichert, dem der Server zugeordnet ist, auf dem die Anwendung oder das Modul zum Zeitpunkt der Erstellung des EJB-Zeitgebers ausgeführt wird. Zeitpläne werden pro Server konfiguriert, sodass jeder Server in Ihrer Topologie eine eindeutige Scheduler-Instanz verwenden kann. In diesem Fall unterstützt die jeweilige Scheduler-Instanz eines Servers die in diesem Server ausgeführten EJB-Zeitgeber.

Jede Scheduler-Instanz wird einer Gruppe von Datenbanktabellen zugeordnet. Wenn mehrere Scheduler-Instanzen vorhanden sind, konfigurieren Sie jede Instanz mit einem eindeutigen Präfix, um sicherzustellen, dass jede Instanz einer eindeutigen Gruppe von Datenbanktabellen zugeordnet ist.

Wenn die Anwendung oder das Modul, die bzw. das die automatischen EJB-Zeitgeber angefordert hat, aus einem Server entfernt wird, müssen die automatischen EJB-Zeitgeber aus der entsprechenden Scheduler-Instanz entfernt werden. Falls die Anwendung oder das Modul auf mehreren Servern installiert ist und jeder dieser Server eine eindeutige Scheduler-Instanz verwendet, müssen die Zeitgeber aus allen diesen Scheduler-Instanzen entfernt werden. Automatisch erstellte EJB-Zeitgeber werden somit pro Server entfernt.

Das Entfernen oder Aktualisieren der Anwendung oder des Moduls führt in einigen Fällen dazu, dass die automatisch erstellten EJB-Zeitgeber aus der Scheduler-Instanz entfernt werden. In dem Fall ist keine Benutzeraktion erforderlich.

Es gibt aber auch Fälle, bei denen das Entfernen oder Aktualisieren der Anwendung oder des Moduls nicht dazu führt, dass die automatisch erstellten EJB-Zeitgeber aus der Scheduler-Instanz entfernt werden. In solchen Fällen müssen Sie den Befehl removeAutomaticEJBTimers verwenden, um die EJB-Zeitgeber manuell zu entfernen.

Der Befehl wird nur im Modus "Verbunden" unterstützt. In einer Network-Deployment-Topologie müssen der Deployment Manager, der Node Agent und der verwaltete Server mit der Scheduler-Instanz aktiv sein. In einer Basistopologie muss der eigenständige Server aktiv sein.

In einem lockeren Konfigurationsszenario mit Rational Application Developer müssen Sie Ihre automatisch erstellten EJB-Zeitgeber manuell entfernen. Programmgesteuert erstellte EJB-Zeitgeber, die nicht dasselbe wie automatisch erstellte EJB-Zeitgeber sind, werden weder automatisch noch mit diesem Befehl entfernt.

Wenn in einer Network-Deployment-Topologie ein einzelnes Modul nur auf einigen Servern installiert ist, müssen die diesem Modul zugeordneten automatisch erstellten Zeitgeber nur aus den Scheduler-Instanzen entfernt werden, die diesen konkreten Servern zugeordnet sind. Eine Scheduler-Instanz eines Servers, auf dem das Modul nicht installiert ist, muss nicht bereinigt werden.

Zielobjekt: Ohne

Erforderliche Parameter:
-appName
Name der Anwendung, die die automatisch erstellten EJB-Zeitgeber, die Sie entfernen möchten, angefordert hat. (String, erforderlich)

-serverName
Name des Servers, auf dem die Anwendung oder das Modul mit den automatisch erstellten EJB-Zeitgebern, die Sie entfernen möchten, ausgeführt wird. Dieser Parameter gibt den logischen Namen eines Anwendungsservers und keinen Hostnamen an. (String, erforderlich)
Optionale Parameter:
-schedulerJNDIName
Dieser Parameter gibt den JNDI-Namen der Scheduler-Instanz an, in der die automatisch erstellten EJB-Zeitgeber, die Sie entfernen möchten, persistent gespeichert werden.

Eine Serverinstanz wird zur Unterstützung automatisch erstellter EJB-Zeitgeber immer für die Verwendung einer bestimmten Scheduler-Instanz konfiguriert. Sie können explizit festlegen, welche Scheduler-Instanz verwendet werden soll. Sie müssen aber nicht explizit eine Scheduler-Instanz konfigurieren. In dem Fall wird eine Standard-Scheduler-Instanz verwendet.

Wenn die Scheduler-Instanz mit den automatisch erstellten Zeitgebern, die Sie entfernen möchten, die derzeit für den Server konfigurierte Scheduler-Instanz ist, können Sie diesen Parameter weglassen. Der Befehl untersucht in dem Fall die Konfiguration, spürt die zurzeit konfigurierte Scheduler-Instanz auf und verwendet diese.

Wenn die derzeit konfigurierte Scheduler-Instanz jedoch nicht die Instanz mit den zu entfernenden EJB-Zeitgebern ist, müssen Sie den JNDI-Namen der Scheduler-Instanz mit diesen Zeitgebern angeben. (String, optional)

-nodeName
Der Name des Knotens, der den Server enthält. (String, erforderlich)
-moduleName
Name des Moduls, das die automatisch erstellten EJB-Zeitgeber, die Sie entfernen möchten, angefordert hat. Wenn Sie alle automatisch erstellten Zeitgeber der Anwendung unabhängig davon, in welchem Modul sie definiert sind, entfernen möchten, wird dieser Parameter übergangen. Dieser Parameter wird nur angegeben, wenn Sie die von einem Modul der Anwendung angeforderten automatisch erstellten Zeitgeber entfernen möchten, jedoch nicht die von einem anderen Modul derselben Anwendung angeforderten Zeitgeber. (String, optional)

Rückgabewert: Ohne

Mithilfe der folgenden Informationen können Sie feststellen, wann dieser Befehl ausgeführt werden muss:
  • WebSphere Application Server versucht, automatisch erstellte EJB-Zeitgeber zu entfernen, wenn alle nachfolgenden Bedingungen erfüllt sind:
    • Eine der folgenden Aktionen wird ausgeführt:
      • Deinstallation der Anwendung
      • Anwendungsaktualisierung
      • Deinstallation eines Moduls
      • Modulaktualisierung
    • Die Aktion wurde im Modus "Verbunden" (und nicht mit wsadmin -conntype none) ausgeführt.
    • Die erforderlichen Server waren zum Zeitpunkt der Aktion aktiv.
      • In einer Network-Deployment-Topologie waren der Deployment Manager, der Node Agent und der verwaltete Server mit den automatisch erstellten EJB-Zeitgebern aktiv.
      • In einer Basistopologie war der eigenständige Server aktiv.
    • Die richtige Folgeaktion wurde ausgeführt.
      • In einer Network-Deployment-Topologie haben Sie die Änderungen gespeichert und mit dem Node Agent synchronisiert. Wenn Sie Ihre Änderungen speichern, aber nicht synchronisieren, werden die automatisch erstellten EJB-Zeitgeber nicht entfernt. Die automatisch erstellten EJB-Zeitgeber werden nur während der Synchronisationsverarbeitung entfernt.
      • In einer Basistopologie haben Sie Ihre Änderungen gespeichert.
    • Die Datenbank, die die Scheduler-Instanz unterstützt, war aktiv.
  • WebSphere Application Server entfernt automatisch erstellte EJB-Zeitgeber nicht, wenn eine der folgenden Situationen vorliegt:
    • Es wird eine andere Aktion als die Aktualisierung oder Deinstallation einer Anwendung bzw. eines Moduls ausgeführt.
    • Die Aktion wird im Modus "Nicht verbunden" ausgeführt. (Dies gilt auch für die Deinstallation/Aktualisierung einer Anwendung bzw. eines Moduls.)
    • Die erforderlichen Server waren nicht aktiv.
      • In einer Network-Deployment-Topologie war der Deployment Manager, der Node Agent oder der verwaltete Server nicht aktiv.
      • In einer Basistopologie war der eigenständige Server nicht aktiv.
    • Die richtige Folgeaktion wurde nicht ausgeführt.
      • In einer Network-Deployment-Topologie wurde die Speicher- oder die Synchronisationsoperation nicht ausgeführt.
      • In einer Basistopologie wurde die Speicheroperation nicht ausgeführt.
    • Die Datenbank, die die Scheduler-Instanz unterstützt, war nicht aktiv.
Wenn WebSphere Application Server bei dem Versuch, automatisch erstellte EJB-Zeitgeber von einem Server zu entfernen, einen Fehler feststellt, wird in die Protokolldatei eine Warnung geschrieben.

Falls ein Fehler auftritt, der Anwendungsserver nicht versucht, automatisch erstellte EJB-Zeitgeber zu entfernen, oder Sie nicht sicher sind, ob die automatisch erstellten EJB-Zeitgeber entfernt wurden, setzen Sie manuell den Befehl removeAutomaticEJBTimers ab um sicherzustellen, dass die automatisch erstellten EJB-Zeitgeber entfernt werden. Falls die automatisch erstellten Zeitgeber bereits aus der Scheduler-Instanz entfernt wurden, hat die Ausführung des Befehls keine Auswirkung, auch keine negative.

Wenn Sie in einer Clusterumgebung mit mehreren Knoten arbeiten und jeder dieser Knoten einen Server enthält, der derselben Cluster-Scheduler-Instanz zugeordnet ist, müssen die automatisch erstellten Zeitgeber nur von einem der Server entfernt werden, weil die gemeinsam genutzte Scheduler-Instanz aktualisiert wird und alle Server, die diese Scheduler-Instanz nutzen, die Änderung sehen.

Falls in einer solchen Situation ein Server auf einem Knoten nicht aktiv ist und Sie eine Warnung empfangen, dass die automatischen Zeitgeber nicht von diesem Server entfernt werden konnten, ist keine Benutzeraktion erforderlich, weil die gemeinsame Scheduler-Instanz bereits aktualisiert wurde und Sie wissen, dass der Server dieselbe Cluster-Scheduler-Instanz wie ein Server auf einem anderen, erfolgreich bereinigten Knoten verwendet.

Dasselbe gilt für einen Cluster, in dem es mehrere Server gibt, die alle zu demselben Knoten gehören und eine Cluster-Scheduler-Instanz gemeinsam nutzen, wenn einige Cluster-Member nicht aktiv sind. Der Anwendungsserver setzt in dem Fall eine Protokollwarnung ab, dass die automatischen Zeitgeber nicht von diesen Servern entfernt werden konnten. Wenn Sie jedoch wissen, dass sie eine gemeinsame Scheduler-Instanz nutzen und einer der Cluster-Member erfolgreich bereinigt wurde, muss keine Benutzeraktion ausgeführt werden, weil die gemeinsam genutzte Scheduler-Instanz bereits aktualisiert wurde.

In einer Network-Deployment-Topologie mit mehreren Servern beeinflusst der Typ des verwendeten Schedulers (Standard-Scheduler oder konfigurierter angepasster Scheduler) die Leistung der Scheduler-Bereinigung. Der EJBContainer-Standard-Scheduler ist für jeden Server eindeutig. Wenn Sie die EJBContainer-Standard-Scheduler-Instanz verwenden und fünf Server haben, gibt es fünf eindeutige Scheduler-Instanzen. Bei Aktualisierung oder Entfernung der Anwendung müssen die automatischen Zeitgeber von allen fünf Instanzen entfernt werden. Verwenden Sie dagegen nur eine gemeinsame, angepasste Scheduler-Instanz, müssen die automatischen Zeitgeber nur einmal aus dieser einen Scheduler-Instanz entfernt werden.

Beispiel 1

Topologie:

  • Der Deployment Manager ist auf Workstation A aktiv.
  • Der Node Agent ist auf Workstation B aktiv. Der Knoten hat den Namen Node01.
  • Der verwaltete Server server1 ist auf Workstation C aktiv.
  • Der verwaltete Server server2 ist auf Workstation D aktiv.
  • Die Sicherheit ist aktiviert.
  • Der Server server2 ist für die Verwendung der Scheduler-Instanz, die die Zeitgeber enthält, konfiguriert.

Hintergrund:

Die Anwendung "testApp" wurde im Modus "Verbunden" über die Administrationskonsole deinstalliert. Alle automatisch erstellten Zeitgeber der Anwendung sollen unabhängig davon, welches Modul die Zeitgeber angefordert hat, entfernt werden.

Der Deployment Manager, der Node Agent und der Server server1 waren aktiv, und die automatischen EJB-Zeitgeber wurden vom server1 entfernt. Der Server server2 war jedoch nicht aktiv, sodass die automatischen EJB-Zeitgeber nicht vom server2 entfernt wurden.

Sie müssen die automatischen EJB-Zeitgeber manuell vom server2 entfernen.

Aktion:
  • Geben Sie im Deployment Manager mit Jacl in einer verbundenen wsadmin-Sitzung die folgende Codezeile ein:
    $AdminTask removeAutomaticEJBTimers "-appName testApp -serverName server2 -nodeName Node01"
  • Geben Sie im Deployment Manager mit Jython in einer verbundenen wsadmin-Sitzung die folgende Codezeile ein:
    AdminTask.removeAutomaticEJBTimers('-appName testApp -serverName server2 -nodeName Node01')

Beispiel 2

Topologie:

  • Der eigenständige Server ist auf Workstation A aktiv. Der Knoten hat den Namen Node01
  • Die Verwaltungssicherheit ist inaktiviert.
  • Der Server "server1" war für die Verwendung der Scheduler-Instanz jndi/sched_1 konfiguriert, als die automatischen EJB-Zeitgeber erstellt wurden. Zurzeit ist "server1" jedoch für die Verwendung der Scheduler-Instanz jndi/sched_2 konfiguriert.

Hintergrund:

Das Modul mod1 der Anwendung testApp wurde deinstalliert. Da server1 jedoch zum Zeitpunkt der Deinstallation für die Verwendung der Instanz jndi/sched_2 konfiguriert war, wurden die automatischen EJB-Zeitgeber nicht aus der Scheduler-Instanz jndi/sched_1 entfernt.

Sie müssen die automatischen EJB-Zeitgeber jetzt manuell aus der Scheduler-Instanz jndi/sched_1 in server1 entfernen.

Die Anwendung enthält die Module "mod1" und "mod2". Beide Module haben automatisch erstellte EJB-Zeitgeber angefordert. Das Modul "mod2" ist noch installiert und die automatisch erstellten EJB-Zeitgeber, die dieses Modul angefordert hat, werden noch benötigt. Sie möchten nur die automatisch erstellten EJB-Zeitgeber, die mod1 angefordert hat, entfernen.

Aktion:
  • Geben Sie auf dem eigenständigen Server mit Jacl in einer verbundenen wsadmin-Sitzung die folgende Codezeile ein:
    $AdminTask removeAutomaticEJBTimers "-appName testApp -moduleName mod1 -serverName server1 -nodeName Node01 -schedulerJNDIName jndi/sched_1"
  • Geben Sie auf dem eigenständigen Server mit Jython in einer verbundenen wsadmin-Sitzung die folgende Codezeile ein:
    AdminTask.removeAutomaticEJBTimers('-appName testApp -moduleName mod1 -serverName server1 -nodeName Node01 -schedulerJNDIName jndi/sched_1')

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



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