Konfigurationsoptionen für persistente Enterprise JavaBeans-Zeitgeber

Persistente EJB-Zeitgeber erfordern über die Aktivierung des Features "ejbPersistentTimer" und die Festlegung der Standarddatenquelle mit der ID "DefaultDataSource" zur Referenzierung einer Datenbank hinaus keine weitere Konfiguration. Es sind optionale Konfigurationseinstellungen verfügbar, mit denen Sie Verhaltensweisen steuern können, wie z. B. die Auswahl einer anderen Datenquelle, wann und wie oft die Datenbank nach persistenten Zeitgebertasks abgefragt wird und ob und wie oft fehlgeschlagene oder rückgängig gemachte Zeitgebertasks wiederholt werden.

Die EJB-Zeitgeberkonfiguration wird mit einem optionalen Konfigurationselement "timerService" angegeben. Konfigurationsattribute für persistente EJB-Zeitgeber werden weiter unter einer persistentExecutor-Konfiguration gruppiert. Der EJB-Zeitgeberservice verwendet eine Instanz des persistenten Steuerprogramms mit dem Namen "defaultEJBPersistentTimerExecutor". Die Konfiguration des persistenten EJB-Zeitgebers kann angepasst werden, indem eine andere Instanz des persistenten Steuerprogramms für den Zeitgeberservice konfiguriert wird. Das bewährte Verfahren für die Anpassung der Konfiguration des persistenten EJB-Zeitgebers ist jedoch das Überschreiben der defaultEJBPersistentTimerExecutor-Instanz, damit Sie Standardwerte aus der defaultEJBPersistentTimerExecutor-Instanz übernehmen können.

Verwenden Sie beispielsweise den folgenden Code, um nur das Wiederholungslimit zu überschreiben:
 <persistentExecutor id="defaultEJBPersistentTimerExecutor" retryLimit="50"/>
Datenbankspeicher für persistente Zeitgebertasks anpassen
Persistente EJB-Zeitgebertasks werden persistent in einer Datenbank gespeichert. Datenbankbezogene Konfigurationseinstellungen werden unter dem Konfigurationselement "databaseStore" gruppiert. Sofern nicht anders konfiguriert, wird eine databaseStore-Instanz mit dem Namen "defaultDatabaseStore" für persistente EJB-Zeitgeber und für andere Produktfeatures, die eine Datenbank erfordern, verwendet. Im Folgenden sehen Sie ein Beispiel für das Überschreiben der Instanz "defaultDatabaseStore":
 <databaseStore id="defaultDatabaseStore" dataSourceRef="DB2DataSource" tablePrefix="MYTIMERS"/>
Im Folgenden sehen Sie ein Beispiel für die Konfiguration einer anderen databaseStore-Instanz für die defaultEJBPersistentTimerExecutor-Instanz:
  <persistentExecutor id="defaultEJBPersistentTimerExecutor" taskStoreRef="MyDBStore"/>
  <databaseStore id="MyDBStore" dataSourceRef="DB2DataSource" tablePrefix="MYTIMERS">
    <authData user="user1" password="password1"/>
  </databaseStore>
Ausführung persistenter Zeitgebertasks aktivieren und inaktivieren

Persistente EJB-Zeitgebertasks werden aktiviert, damit sie bei der Festschreibung der Transaktion ausgeführt werden, in der sie geplant wurden. Um zu verhindern, dass persistent Zeitgebertasks ausgeführt werden, können Sie das Attribut "enableTaskExecution" mit dem Wert false konfigurieren, woraufhin der EJB-Zeitgeberservice die persistenten Zeitgebertasks zwar weiterhin in die Datenbank schreibt, aber diese nicht ausführt. Wenn der Wert in true geändert wird, beginnt der EJB-Zeitgeberservice mit der Ausführung der Zeitgeber, die zuvor geplant wurden, sowie mit der Ausführung aller neuen geplanten Zeitgeber.

Abfrage des persistenten Speichers für Zeitgebertasks anpassen
Es wird eine einzige anfängliche Abfrage des persistenten Speichers beim Start durchgeführt, um alle zuvor geplanten Zeitgebertasks zu ermitteln. Wenn Tasks geplant sind, werden Informationen zur geplanten nächsten Ausführungszeit persistent gespeichert und im Hauptspeicher gehalten, was eine weitere Abfrage des persistenten Speichers unnötig macht. Dieses Verhalten ist in vielen Fällen ideal, aber nicht immer wünschenswert.
  • Wenn die Zeitgebertasks externe Abhängigkeiten von anderen Services hat, findet die anfängliche Abfrage möglicherweise zu früh statt und die Zeitgebertasks können fehlschlagen, weil die erforderlichen externen Services nicht verfügbar sind. In diesem Fall kann eine Verzögerung der anfänglichen Abfrage vorgenommen werden, um die anfängliche Abfrage um einen festen Zeitraum zu verzögern.
  • Wenn sehr viele persistente EJB-Zeitgeber geplant sind, belegen diese unter Umständen zu viel Hauptspeicher. In diesem Fall können Sie ein Abfrageintervall konfigurieren, um den persistenten Speicher in regelmäßigen Abständen nur nach den Zeitgebertasks abzufragen, die Sie innerhalb des Intervalls bis zur nächsten Abfrage ausführen möchten. Durch Festlegung der Abfragegröße kann die Anzahl der Zeitgebertasks, die in jedem Abfrageintervall aus der Datenbank gelesen werden können, weiter eingeschränkt werden, was dazu führen kann, dass einige Tasks zu spät ausgeführt werden.
Beispielkonfiguration:
<persistentExecutor id="defaultEJBPersistentTimerExecutor" initialPollDelay="5m" pollInterval="10m" pollSize="200"/>
Wiederholungen für fehlgeschlagene und rückgängig gemachte persistente Zeitgebertasks

Wenn Ausführungen persistenter EJB-Zeitgeber fehlschlagen oder zum Rollback markiert werden, werden diese sofort und nur ein einziges Mal wiederholt. Sollte die sofortige Wiederholung fehlschlagen, werden die Ausführungen in einem festen Intervall so oft wiederholt, bis sie erfolgreich sind. Die Anzahl der Wiederholungsversuche kann durch Festlegung eines Wiederholungslimits in der Konfiguration beschränkt werden. Außerdem können Sie das Wiederholungsintervall in der Konfiguration festlegen.

Beispielkonfiguration:
  <persistentExecutor id="defaultEJBPersistentTimerExecutor" retryLimit="100" retryInterval="2m"/>

Symbol das den Typ des Artikels anzeigt. Referenzartikel



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