Sie können angeben, dass ein bestimmter EJB-Typ
seinen Status vor dem Aufruf von "findBy" nicht mit dem persistenten
Speicher synchronisieren soll. Für den Aufruf können Sie Umgebungsvariablen oder eine Markierungsschnittstelle verwenden.
Informationen zu diesem Vorgang
Es sind zwei Optionen verfügbar, mit denen Sie festlegen können, dass
eine EJB eines bestimmten Typs ihren Status vor dem Aufruf von findBy nicht mit dem persistenten Speicher
synchronisieren soll:
- Sie können eine EJB-Umgebungsvariable im Implementierungsdeskriptor der Bean definieren.
- Sie können von der Implementierungsklasse der Bean eine Markierungsschnittstelle implementieren lassen. Dieses
zweite Verfahren ist hilfreich, wenn Sie eine Reihe von Bean-Implementierungen haben, die eine
gemeinsame Stammklasse erweitern. In diesem Fall können Sie die Schnittstelle für Kennzeichnung von der
Stammklasse implementieren lassen, damit alle Beans, die diese Klasse erweitern, auch das Verhalten übernehmen.
Vorgehensweise
- Wenn Sie das Verfahren mit der EJB-Umgebungsvariablen verwenden möchten, editieren Sie den
EJB-Implementierungsdeskriptor wie folgt mit einem Java-EE-Standardentwicklungstool. Informationen zu den Tooloptionen finden Sie im Artikel
"Assembliertools".
- Starten Sie das Tool.
- Wählen Sie den EJB-Implementierungsdeskriptor der Bean aus, die Sie bearbeiten möchten.
- Erstellen Sie eine EJB-Umgebungsvariable mit dem Namen com/ibm/websphere/ejbcontainer/disableFlushBeforeFind.
- Setzen Sie den Typ dieser Variablen auf java.lang.Boolean.
- Setzen Sie den Wert auf True, um die Synchronisation vor dem find-Aufruf zu verhindern, oder auf False,
wenn Sie das Standardverhalten aktivieren möchten.
- Speichern Sie Ihre Änderungen.
- Wenn Sie ein Markierungs-Interface verwenden möchten, codieren Sie die Implementierungsklasse der Bean so, dass
sie das Interface com.ibm.websphere.ejbcontainer.disableFlushBeforeFind implementiert. Die Implementierungsklasse der Bean muss die Schnittstelle nicht direkt implementieren.
Die Schnittstelle kann auch von einer übergeordneten Klasse implementiert werden.
Lesen Sie die Informationen zum Paket com.ibm.websphere.ejbcontainer
im Abschnitt Referenz > Entwickler > API-Dokumentation des Information Center.
Datenintegrität für die während einer Transaktion durchgeführten Abfragen sicherstellen
Wenn
Sie die automatische Synchronisation vor Aufruf von find-Methoden inaktivieren möchten,
muss Ihre Anwendung andere Verfahren verwenden, um sicherzustellen,
dass Abfragen, die während der Transaktion durchgeführt werden, nicht auf Daten angewendet werden, die möglicherweise
nicht mehr gültig sind. Sie können die Methode
flushCache in der Klasse com.ibm.websphere.ejbcontainer.EJBContextExtension
(eine Erweiterung von javax.ejb.EJBContext) verwenden, um zu von der Anwendung vorgegebenen Zeiten
eine manuelle Synchronisation mit dem persistenten Speicher durchzuführen.
Nähere Informationen zu EJBContextExtension und den zugehörigen Klassen SessionContextExtension, EntityContextExtension
und MessageDrivenContextExtension finden Sie in den Informationen zum Paket com.ibm.websphere.ejbcontainer
im Abschnitt Referenz > Entwickler > API-Dokumentation des Information Center.