Technologien für CMP-Beans

WebSphere Application Server stellt CMP-Services bereit, die über die durch die EJB-Spezifikation (Enterprise JavaBeans) festgelegten Standards hinausgehen.

Gemäß der Spezifikation synchronisiert der EJB-Container den Status von CMP-Beans mit der zu Grunde liegenden Datenbank und verwaltet die Beziehungen zwischen den Entity-Beans (CMRs, Container-Managed Relationships). Auf diese Weise nimmt EJB den Entwicklern von Beans die Arbeit ab, datenbankspezifischen Code zu schreiben. Statt dessen können sich die Entwickler auf das Schreiben der Geschäftslogik konzentrieren. WebSphere Application Server stellt die folgenden zusätzlichen CMP-Funktionen bereit, um die Entwicklungseffizienz noch weiter zu erhöhen und die Laufzeitleistung der Geschäftslogik zu optimieren:
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.
Nähere Einzelheiten finden Sie in Hilfetexten des Assembliertools zu LifetimeInCache.
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".


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