Technologien für CMP-Beans
WebSphere Application Server stellt CMP-Services bereit, die über die durch die EJB-Spezifikation (Enterprise JavaBeans) festgelegten Standards hinausgehen.
- Entity-Bean-Vererbung
- Vererbung ist ein Schlüsselaspekt
objektorientierter Softwareentwicklung. Dieses Leistungsmerkmal fehlt in der
EJB-2.1-Spezifikation.
Die Verwendung der Vererbung ermöglicht einem Entwickler, Felder, Beziehungen und Geschäftslogik in einer Superklassen-Entity-Bean zu definieren. Die Informationen werden von allen Unterklassen übernommen. Ausführliche Informationen zur Verwendung der Vererbung in WebSphere Application Server und Entity-Beans enthält der Abschnitt zur EJB-Vererbung in der Dokumentation zu Rational Application Developer.
- Richtlinien für Zugriffsarten
- Die Richtlinien für Zugriffsarten bieten Entwicklern von Java™-EE-Anwendungen das Verfahren, mit dem sie die Absicht, die Interaktion einer Anwendung einem wesentlichen Status für Entity-Beans zuzuordnen, damit die Persistenzverfahren entsprechende Optimierungen durchführen können. Wenn z. B. bekannt ist, dass eine Entität während einer Transaktion nicht aktualisiert wird, kann die Persistenzverwaltung die Steuerung des gemeinsamen Zugriffs einschränken und die Datenintegrität aufrechterhalten, indem sie Aktualisierungsoperationen für die Dauer der Transaktion nicht zulässt.
- Daten transaktionsübergreifend zwischenspeichern
- Das transaktionsübergreifende
Zwischenspeichern von Daten ist eine konfigurierbare Option, die vom Bean-Deployer
festgelegt wird und die Leistung erheblich steigern kann. Im Wesentlichen
ist diese Option für Daten vorgesehen, die selten geändert werden. Diese Option
ist als Lebensdauer im Cache bekannt.
Die Daten für eine Entität, die für die
Lebensdauer im Cache konfiguriert wurde, wird in einem Cache gespeichert, bis die
angegebene Lebensdauer abgelaufen ist. Anforderungen, die sich für den Zeitraum der konfigurierten Lebensdauer auf
die Entität beziehen, verwenden die zwischengespeicherten Daten. Es werden keine
Abfragen gegen die zugrunde liegende Datensammlung durchgeführt. Die
Lebensdauer kann als Zeit angegeben werden, die vergangen ist, seit die
Daten aus dem Datenspeicher abgerufen wurden. Es ist auch möglich, die Lebensdauer
als Zeit anzugeben, die bis zu einem bestimmten Zeitpunkt des Tages oder der Woche
vergeht. Gültige Werte für LifetimeInCache sind:
- Off
- Die LifetimeInCache-Einstellung wird ignoriert. Beans dieses Typs werden nur in einem für Transaktionen bestimmten Cache zwischengespeichert. Die zwischengespeicherten Daten für diese Instanz sind nach Abschluss der Transaktion nicht mehr gültig.
- ElapsedTime
- Der Wert der LifetimeInCache-Einstellung wird der aktuellen Zeit nach Abschluss der Transaktion (in der die Bean-Instanz abgerufen wird) hinzugefügt. Die zwischengespeicherten Daten für diese Instanz sind danach nicht mehr gültig. Der Wert der LifetimeInCache-Einstellung kann einen Zeitraum von Minuten, Stunden, Tagen usw. bezeichnen.
- ClockTime
- Der Wert von LifetimeInCache gibt eine bestimmte Uhrzeit an. Der Wert wird der
unmittelbaren vorangehenden oder folgenden Mitternacht hinzugefügt, um
einen zukünftigen Zeitwert zu berechnen, der dann mit dem Parameter "Abgelaufene
Zeit" angegeben wird. Mit dieser Einstellung können Sie angeben,
dass für alle Instanzen dieses Bean-Typs die jeweils zwischengespeicherten Daten zu einer bestimmten
Uhrzeit invalidiert werden müssen, unabhängig davon, wann sie
abgerufen wurden.
Die Verwendung von 00:00 Uhr (Mitternacht) des vergangenen oder folgenden Tages für die Berechnung eines zukünftigen Zeitpunkts richtet sich nach dem Wert von LifetimeInCache. Wenn die Summe aus dem LifetimeInCache-Wert und der vergangenen Mitternacht einen Wert ergibt, der vor der aktuellen Zeit liegt, wird die folgende Mitternacht verwendet.
Wenn Sie die Einstellung ClockTime verwenden, darf der Wert von LifetimeInCache nicht größer sein als 24 Stunden. Sollte der Wert größer sein, subtrahiert der Cachemanager 24-Stunden-Inkremente von diesem Wert, bis ein Wert erreicht wird, der kleiner-gleich 24 Stunden ist. Sie müssen LifetimeInCache auf null (0) setzen, wenn Daten um 00:00 Uhr (Mitternacht) ungültig gemacht werden sollen.
- WeekTime
- Diese Einstellung ist ähnlich wie ClockTime. Allerdings wird der Wert von LifetimeInCache der Mitternacht des vorherigen oder folgenden Sonntags (d. h. eigentlich Samstag 23:59 plus 1 Minute) hinzugefügt. In diesem Fall kann der Wert von LifetimeInCache mehr als 24 Stunden, aber nicht mehr als 7 Tage darstellen.
Anmerkung:Da die Daten, die eine Entity-Bean verwendet, von früheren Transaktionen verwendet werden können, gehen die Isolationsstufe und die Aktualisierungssperre (Richtlinien für Zugriffsarten) für die Bean in der aktuellen Transaktion verloren, wenn Sie LifeTimeInCache für die Bean konfigurieren. Dies kann zu Datenintegritätsproblemen führen, wenn Ihre Anwendung Logik für die Berechnung von Werten aus schreibgeschützten Daten enthält und Sie das Ergebnis in einer anderen Bean speichern. Deshalb ist es wichtig, eine Konsistenzprüfung bei erneutem Lesen durchzuführen, um sicherzustellen, dass die Daten ordnungsgemäß gesperrt werden, wenn sie aus dem speicherinternen Cache geladen werden. Andernfalls werden die Daten in der Datenbank aktualisiert, ohne zu wissen, dass die zugrundeliegenden Daten geändert wurden, was zum Verlust vorheriger Änderungen führen kann. Weitere Informationen finden Sie im Artikel "Konsistenzprüfung bei erneutem Lesen mit einem Assembliertool".
- Schreibgeschützte Entity-Beans
- Durch die Deklaration schreibgeschützter Entity-Beans kann die Leistungsverbesserung, die durch Caching
erzielt wird, noch weiter gesteigert werden.
Beide Features stützen sich auf dasselbe Prinzip: Minimierung der Kosten, die durch das wiederholte Neuladen von
Entity-Beans aus Daten im persistenten Speicher entstehen.
Wenn Sie Entity-Beans als schreibgeschützt deklarieren, können Sie Voraussetzungen und Häufigkeit für Neuladeoperationen
den Anforderungen Ihrer Anwendung entsprechend festlegen.
Zur Verwendung dieser Funktion deklarieren Sie den Bean-Typ als schreibgeschützt (read-only), indem Sie über eine Auswahlliste im Assembliertool eine bestimmte Gruppe von Bean-Caching-Optionen auswählen. Ausführliche Informationen finden Sie im Artikel "Konsistenzprüfung bei erneutem Lesen mit einem Assembliertool".