Enterprise-Beans entwickeln
In der Regel wird eines von zwei möglichen Szenario für die Entwicklung von Enterprise-Beans mit dem Produkt verwendet. Das erste Szenario ist die Befehlszeile mit Verwendung von Ant, Make, Maven oder ähnlichen Tools. Das zweite Szenario ist eine IDE-basierte Entwicklungs -und Erstellungsumgebung. Die Schritte in diesem Artikel beschreiben die Entwicklung ohne IDE.
Vorbereitende Schritte
- Vor dem Entwickeln von Entity-Beans mit CMP (Container-managed Persistence) sollten Sie den Artikel "Parallelitätssteuerung" lesen.
- Vor dem Entwickeln von Entity-Beans mit über Container realisierter Transaktionspersistenz sollten Sie den Artikel "Parallelitätssteuerung" lesen. Beachten Sie, dass Module der EJB Version 3.x keine Entity-Beans unterstützen. Entity-Beans müssen weiterhin in Module der Version EJB 2.x eingefügt werden.
Informationen zu diesem Vorgang
- Sie können eines der verfügbaren IDE-Tools verwenden, die automatisch
große Teile des Enterprise-Bean-Codes generieren und
integrierte Tools für das Packen und den Test der Enterprise-Beans enthalten.
Die empfohlene IDE ist das Produkt Rational Application Developer.
Fügen Sie dem Build-Pfad des IDE-Projekts die Datei "Installationsstammverzeichnis/dev/JavaEE/j2ee.jar" hinzu, um Kompilierungsabhängigkeiten von den neuen API-Klassen der EJB Version 3.x aufzulösen. Die Codeunterstützung funktioniert, wenn diese JAR-Datei dem Build-Pfad des Projekts hinzugefügt wird. Wenn Sie einen Server (siehe J2EE-Perspektive) definieren, geben Sie für den Server das Installationsverzeichnis des Produkts an. Wenn Sie ein Projekt mit Bezug zu Java™ EE in Rational Application Developer erstellen, fügt das Projekt automatisch die Datei Installationsstammverzeichnis/dev/JavaEE/j2ee.jar zum Buildpfad des Projekts hinzu.
- Wenn Sie sich entschlossen haben, Enterprise-Beans ohne IDE zu entwickeln, benötigen Sie mindestens
einen ASCII-Texteditor. Sie können auch ein Java-Entwicklungstool verwenden, das keine Enterprise-Bean-Entwicklung unterstützt. Sie können dann die im Java Software Development Kit (SDK)
und in diesem Produkt verfügbaren Tools verwenden, um die Beans zu assemblieren, zu testen und einzusetzen.
Wie das Assembliertool erfordert auch eine standardmäßig verwendete Java EE-Erstellungsumgebung unter Verwendung der Befehlszeile einige Änderungen, um Module der EJB Version 3.x zu nutzen. Wie in früheren Java EE-Anwendungsentwicklungsmustern muss die Datei j2ee.jar im Verzeichnis "Installationsstammverzeichnis/dev/JavaEE" in den Klassenpfad des Compilers aufgenommen werden. Ein Beispiel für eine Erstellungsumgebung unter Verwendung der Befehlszeile, die Ant verwendet, ist im Verzeichnis Installationsstammverzeichnis/samples/src/TechSamp enthalten.
Die folgenden Schritte gelten vorrangig für die erste Vorgehensweise, die Entwicklung ohne IDE.
Vorgehensweise
Beispiel: Schreibgeschützte Entity-Bean verwenden
Im Folgenden werden ein Einsatzszenario und ein Beispiel für das Schreiben einer EJB-Anwendung gezeigt, 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: 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.
Nächste Schritte
Assemblieren Sie die Beans zu EJB-Modulen. Lesen Sie den Artikel "EJB-Module assemblieren" oder "EJB-Module der Version 3.x assemblieren", wenn Sie Beans der EJB Version 3.x verwenden.