Daten für einen Zeitgeberservice zwischenspeichern

Wenn Sie den Datenbankzugriff und die SQL-Aufrufe für einen EJB-Zeitgeberservice optimieren möchten, können Sie den Anwendungsserver so konfigurieren, dass er die Daten für diesen Zeitgeber zwischenspeichert. Das Caching ermöglicht dem Anwendungsserver, Zeitgeberdaten wiederzuverwenden, ohne die Datenbank jedes Mal erneut abfragen zu müssen, wenn Daten erforderlich sind.

Informationen zu diesem Vorgang

Indem Sie dem Anwendungsserver ermöglichen, Daten für einen EJB-Zeitgeberservice (Enterprise JavaBeans) zwischenzuspeichern, können Sie die Anzahl der SQL-Anweisungen, die für Aufrufe von Methoden in der Zeitgeberschnittstelle aufgerufen werden, minimieren. Wenn dieses Feature aktiviert ist, werden die Daten für den Zeitgeber im Zeitgeberobjekt zwischengespeichert, wenn Sie dieses Objekt erstellen.

Die Spezifikation für Enterprise-Beans erfordert, dass für jeden Aufruf der Schnittstelle "javax.ejb.Timer" ein SQL-Aufruf an die Datenbank abgesetzt wird, sodass die Anwendung sicherstellen kann, dass der EJB-Zeitgeber die aktuellsten verfügbaren Daten verwendet. Wenn diese Methoden häufig aufgerufen werden oder wenn Sie viele EJB-Zeitgeber haben, die eine dieser Methoden aufrufen, generiert der Anwendungsserver in sehr kurzer Zeit sehr viele SQL-Anweisungen. Es kann Situationen geben, in denen sich die strenge Einhaltung dieser Anforderung nachteilig auf die Leistung auswirkt und mehr Aufwand als zugesichert erzeugt.

Angenommen, ein Zeitgeber läuft immer nur montags um 12:00 Uhr morgens ab. Im Laufe der Woche bewirkt jeder Aufruf einer Methode in der Zeitgeberschnittstelle die Erstellung eines SQL-Aufrufs, aber der Aufruf gibt immer dieselben Daten zurück. Wenn eine Anwendung die Methode "ejbTimeout" für einen Zeitgeber aufruft, können die Daten, die diesem Zeitgeber zugeordnet sind, außerdem nicht mehr geändert werden. Die Daten des Zeitgebers, die in der Datenbank gespeichert sind, können nicht aktualisiert werden, während eine Methode "ejbTimeout" für diesen Zeitgeber aktiv ist. Deshalb bewirken alle nachfolgenden Methodenaufrufe, die Anwendungen innerhalb des Zeitlimitintervalls absetzen, die Generierung unnötiger SQL-Aufrufe und unnötige Interaktionen mit der Datenbank.

Wenn Sie jedoch das Caching für Zeitgeberdaten aktivieren, fragt der Anwendungsserver die Datenbank nur beim ersten Aufruf einer konfigurierten Methode ab. Für alle nachfolgenden Aufrufe einer der konfigurierten Methoden verwendet der Anwendungsserver die zwischengespeicherten Daten für die Lebensdauer des Zeitgeberobjekts, und es wird kein neuer SQL-Aufruf generiert.

Fehler vermeiden Fehler vermeiden: Beachten Sie die folgenden Bedingungen:
  • Wenn dieses Feature aktiviert ist, ist Ihre Konfiguration mit der EJB-Spezifikation nicht mehr kompatibel.
  • Dieses Feature kann dazu führen, dass ein Zeitgeber unter Umständen veraltete Daten verwendet. Zwischengespeicherte Daten für einen Zeitgeberservice sind nach dem nächsten Ablaufzeitraum für den Zeitgeber veraltet.

    Angenommen, Sie haben einen Zeitgeber mit einem konfigurierten Ablaufzeitraum von einer Stunde. Wenn Sie das Zeitgeberobjekt erstellen und speichern, sind die Daten, die der Anwendungsserver für dieses Objekt zwischenspeichert nur eine Stunde lang aktuell. Die zwischengespeicherten Daten sind identisch mit den Daten, die in der Datenbank gespeichert sind.

    Wenn Sie innerhalb der ersten Stunde Zeitgebermethoden aufrufen, sind die Zeitgeberdaten aktuell. Nach diesem Ablaufzeitraum sind die zwischengespeicherten Daten für den Zeitgeber jedoch veraltet und spiegeln unter Umständen die Daten, die in der Datenbank gespeichert sind, nicht mehr exakt wider. Wenn Sie in diesem Beispiel den EJB-Container für alle Zeitgeber nach anderthalb Stunden abfragen, erhält die Anwendung ein neues Zeitgeberobjekt, das zwischengespeicherte Daten enthält, die noch dreißig Minuten lang aktuell bleiben. Dies ist darauf zurückzuführen, dass der Zeitgeber bei Stunde 2 erneut abläuft und alle zwischengespeicherten Daten dann veraltet sind.

gotcha

Vorgehensweise

  1. Wählen Sie in der Administrationskonsole des Anwendungsservers den Server aus, den Sie konfigurieren möchten. Klicken Sie auf Server > Anwendungsserver > Server.
  2. Wählen Sie im Bereich "Serverinfrastruktur" die Einträge Java- und Prozessverwaltung > Prozessdefinition aus.
  3. Wählen Sie im Bereich "Weitere Eigenschaften" Java Virtual Machine aus.
  4. Wählen Sie im Bereich "Weitere Eigenschaften" der Anzeige "Java™ Virtual Machine" den Eintrag Angepasste Eigenschaften aus.
  5. Erstellen oder ändern Sie die angepasste Eigenschaft "com.ibm.websphere.ejbcontainer.allowCachedTimerDataFor".
    • Wenn die Eigenschaft nicht vorhanden ist, klicken Sie auf Neu, um die Eigenschaft zu erstellen.
    • Wenn die Eigenschaft bereits vorhanden ist, wählen Sie sie aus, und klicken Sie auf Ändern, um die Werte zu ändern.
  6. Geben Sie com.ibm.websphere.ejbcontainer.allowCachedTimerDataForname als Namen für die angepasste Eigenschaft ein.
  7. Bestimmen Sie den besten Wert für Ihre Anforderungen und Ihre Umgebung. Mit dem Eigenschaftswert können Sie das Caching wie gewünscht steuern. Sie können ein Platzhalterzeichen angeben oder bestimmte Zeitgebernamen verwenden, und Sie können die Steuerung der Methoden, die zwischengespeichert werden, optimieren, indem Sie je nach Methode bestimmte ganzzahlige Werte zuordnen.
    Diese ganzzahligen Werte ermöglichen Ihnen eine präzise Steuerung der Methoden, die zwischengespeicherte Daten verwenden sollen. Ganzzahlige Werte werden auf Bean-Basis zugeordnet, bzw. gelten für alle Beans, wenn Sie einen Stern (*) verwenden. Im Folgenden sind die ganzzahligen Werte und die entsprechenden Methoden aufgeführt:
    1
    Gibt die Methode "getHandle()" an.
    2
    Gibt die Methode "getInfo()" an.
    4
    Gibt die Methode "getNextTimeout()" an.
    8
    Gibt die Methode "getTimeRemaining()" an.
    16
    Gibt die Methode "getSchedule()" an.
    32
    Gibt die Methode "isPersistent()" an.
    64
    Gibt die Methode "isCalendarTimer()" an.
    Anmerkung: Sie können diese Eigenschaft auf einzelne der zuvor aufgelisteten Methoden anwenden, indem Sie den zugeordneten ganzzahligen Wert verwenden, oder Sie können sie auf eine Methodenkombination anwenden. Beispiel:
    • Wenn Sie diese Eigenschaft auf die Methode "getHandle" und die Methode "getTimeRemaining" anwenden möchten, addieren Sie die ganzzahligen Werte für die beiden Methoden, und verwenden Sie dann den Summenwert 9 (1+8).
    • Wenn Sie die Eigenschaft auf alle sieben Methoden anwenden möchten, verwenden Sie den Wert 127 (1+2+4+8+16+32+64), oder geben Sie keinen ganzzahligen Wert an. Standardmäßig wird das Caching auf alle Methoden angewendet.
    Wenn Sie Ihre Entscheidung treffen, verwenden Sie Platzhalterzeichen für alle Zeitgeber oder die JNDI-Namen der Zeitgeber-Beans, für die der Anwendungsserver das Caching anwenden soll.
    • Sie können einen Stern (*) (der alle Zeitgeber konfiguriert), optional gefolgt von einem ganzzahligen Wert oder einer Summe ganzzahliger Werte, die bzw. der die entsprechenden Methoden in der Zeitgeberschnittstelle angibt, eingeben. Wenn Sie keinen ganzzahligen Wert angeben, wendet der Anwendungsserver das Caching auf alle Methoden an.
      Beim folgenden Wert wird das Caching beispielsweise auf Methoden für alle Zeitgeber angewendet:
      *
    • Sie können den Namen der EJB-Zeitgeber-Bean, optional gefolgt von einem ganzzahligen Wert oder einer Summe ganzzahliger Werte, die bzw. der die entsprechenden Methoden in der Zeitgeberschnittstelle angibt, eingeben. Wenn Sie mehrere Zeitgeber-Beans eingeben möchten, trennen Sie die einzelnen Anwendungsnamen durch einen Doppelpunkt (:) voneinander. Wenn Sie keinen ganzzahligen Wert angeben, wendet der Anwendungsserver das Caching auf alle Methoden an.
      Beim folgenden Wert wird das Caching beispielsweise auf alle Methoden für MyTimerBean1 und MyTimerBean2 angewendet:
      MyApp1#MyEJBModule1#MyTimerBean1:MyApp2#MyEJBModule2#MyTimerBean2
  8. Wählen Sie OK aus.
  9. Starten Sie den Anwendungsserver erneut.

Beispiel

Die folgenden Beispiele veranschaulichen verschiedene Möglichkeiten für die Implementierung des Caching-Features für Zeitgeberservices. Angenommen, Sie haben zwei Anwendungen, und jede Anwendung hat Zeitgeber. Die Zeitgeber verwenden die folgenden J2EE-Namen:
  • App1#EJBJar1.jar#EJBTimer1
  • App2#EJBJar2.jar#EJBTimer2
Die Beispiele zeigen den Wert, der für die angepasste Eigenschaft "com.ibm.websphere.ejbcontainer.allowCachedTimerDataForname" zu verwenden ist.
Beispiel 1
In diesem Beispiel wird das Caching auf alle Methoden für alle Zeitgeber und für alle Anwendungen angewendet.
Verwenden Sie einen der folgenden Werte:
  • Verwendung der Standardwerte:
    *
  • Angabe eines ganzzahligen Werts:
    *=127
Beispiel 2
In diesem Beispiel wird das Caching auf die Methode "getInfo" in allen Zeitgebern für alle Anwendungen angewendet.
Verwendung des folgenden Werts:
*=2
Beispiel 3
In diesem Beispiel wird das Caching auf die Methoden "getHandle" und "getNextTimeout" in EJBTimer2 angewendet.
Verwendung des folgenden Werts:
App2#EJBJar2.jar#EJBTimer2=5
Beispiel 4
In diesem Beispiel wird das Caching angewendet auf
  • die Methode "getInfo" in EJBTimer1,
  • die Methoden "getNextTimeout" und "getTimeRemaining" in EJBTimer2.
Verwendung des folgenden Werts:
App1#EJBJar1.jar#EJBTimer1=2:App2#EJBJar2.jar#EJBTimer2=12

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=tejb_timercache
Dateiname:tejb_timercache.html