Beispiel: Schreibgeschützte Entity-Bean verwenden

Im Folgenden werden ein Einsatzszenario und ein Beispiel für das Schreiben einer EJB-Anwendung beschrieben, die eine schreibgeschützte Entity-Bean verwendet.

Einsatzszenario

Ein Kunde hat eine Datenbank mit Katalogpreisen und Versandtarifen, die täglich spätestens um 22:00 Ortszeit aktualisiert wird. Der Kunde möchte eine EJB-Anwendung schreiben, die auf diese Daten im Lesezugriff zugreift, d. h. die Anwendung soll die Datenbank nicht aktualisieren. Die Aktualisierung soll von einer anderen Anwendung durchgeführt werden.

Beispiel

Die lokale Schnittstelle der Entity-Bean des Kunden ist wie folgt definiert:

		public interface ItemCatalogData extends EJBLocalObject {
	 
	  	  public int getItemPrice();
	 
	  	  public int getShippingCost(int destinationCode);
	 
	}

Der Code in der Methode der Stateless-Session-Bean (beispielsweise TxRequired), die diese Entity-Bean aufruft, um die Gesamtkosten inklusive Versand zu ermitteln, könnte wie folgt aussehen:

	.....
	 	// Bis zu diesem Punkt finden einige transaktionsorientierte Schritte statt, z. B. Entfernen eines Artikels
  // aus dem Inventar usw.
  // Jetzt den Preis des Artikels abrufen und mit der Berechnung der Gesamtkosten für den Käufer beginnen
 
  ItemCatalogData theItemData = 
	    	    (ItemCatalogData) ItemCatalogDataHome.findByPrimaryKey(theCatalogNumber);
 
		int totalcost = theItemData.getItemPrice();
	 
		// ...     Dazwischen andere Verarbeitungsschritte durchführen
	// ...
	// ...
	 
		// Versandkosten hinzufügen
		totalcost = totalcost + theItemData.getShippingCost(theDestinationPostalCode);
Bei der Assemblierung der Anwendung setzt der Kunde die Parameter für das EJB-Caching für die Bean wie folgt fest:
  • ActivateAt = ONCE
  • LoadAt = DAILY
  • ReloadInterval = 2200
    Veraltetes Feature Veraltetes Feature: Die Attribute "reloadInterval" und "reloadingEnabled" der Erweiterungen für IBM Implementierungsdeskriptoren sind veraltet. Dies gilt sowohl für die Erweiterung für WAR-Dateien (WEB-INF/ibm-web-ext.xmi) als auch für die Anwendungserweiterung (META-INF/ibm-application-ext.xmi).depfeat

Beim ersten Aufruf der Methode "getItemPrice()" nach 22:00 Uhr lädt der EJB-Container die Preisinformationen erneut aus der Datenbank. Sollte dieser Zeitpunkt zwischen den Aufruf von getItemPrice() und getShippingCost() fallen, gibt die Methode getShippingCost() den Wert zurück, den sie vor der Aktualisierung der Datenbank ermittelt hatte, da der erste Methodenaufruf in dieser Transaktion vor 22:00 Uhr erfolgt ist. Damit bleiben die verwendeten Artikelpreise und Versandkosten synchron.


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