Innovator 11 classiX Unterstützung von Enterprise JavaBeans HowTo für Borland JBuilder Alexander Borschet www.mid.de HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder Inhaltsverzeichnis EJBs für Borland JBuilder mit Innovator classiX unterstützen............................................4 Was sind Enterprise JavaBeans? ...................................................................................4 Was ist JBuilder? ............................................................................................................4 Was ist BES? ..................................................................................................................4 Wie werden EJBs unterstützt? ........................................................................................4 UML-Modell mit Java-Profil anlegen ...............................................................................5 Modell für Enterprise JavaBeans konfigurieren ..................................................................5 Add-On Java EJB 2.x für Borland laden .........................................................................5 Container Managed Entitiy Beans und das Datenmodell ...................................................6 Datenmodell erstellen .....................................................................................................6 Beziehungen zwischen Beans modellieren ........................................................................7 Beziehungen zwischen Bean-Klassen im Klassendiagramm darstellen.........................7 Bean-Klassen hinzufügen ...............................................................................................7 Bean Managed Persistence Entity Bean erstellen ..........................................................7 Stateless Session Bean erstellen....................................................................................7 Stateful Session Bean erstellen ......................................................................................7 Container Managed Relationship erstellen .....................................................................8 Lokale Referenz erstellen ...............................................................................................8 Remote-Referenz erstellen .............................................................................................8 Anzeige von Attributen und Methoden festlegen ............................................................8 EJB-Elementeigenschaften im Klassendiagramm anzeigen...........................................8 Attribute, Methoden und Home/Remote-Interface einer Bean modellieren ........................9 Klassendiagramm für eine Bean-Klasse und ihre Schnittstellenklassen erstellen..........9 Bean-Klasse hinzufügen .................................................................................................9 Stateless Session Bean erstellen....................................................................................9 Stateful Session Bean erstellen ....................................................................................10 Message Driven Bean erstellen ....................................................................................10 Schnittstellen einer Bean-Klasse festlegen...................................................................10 Business-Methode erstellen..........................................................................................10 Creator-Methode erstellen ............................................................................................10 Home-Methode erstellen...............................................................................................10 Select-Methode erstellen ..............................................................................................11 Finder-Methoden erstellen ............................................................................................11 Anzeige von Attributen und Methoden festlegen ..........................................................11 EJB-Elementeigenschaften im Klassendiagramm anzeigen.........................................11 Forward-Engineering-Aktion Java Apply EJB 2.x Pattern.............................................12 Verzeichnisstruktur von JBuilder...................................................................................13 Aktionen für die Source-Code-Generierung..................................................................15 EJB-Deployment-Descriptor erstellen...............................................................................15 EJBs in JBuilder vorbereiten .........................................................................................15 Komponente ejb-jar.xml erstellen..................................................................................15 EJBs in JBuilder bearbeiten ..........................................................................................16 Forward-Engineering-Aktion Java Generate EJB 2.x DD for Borland...........................16 Value Object erzeugen .....................................................................................................16 Forward-Engineering-Aktion Java Create Value Objects..............................................16 Anhang: Beschreibung des Add-Ons Java EJB ...............................................................17 Zweck............................................................................................................................17 Vorausgesetzte Profile ..................................................................................................17 Benötigte Elemente des UML-Metamodells..................................................................17 Kommandos zum Erstellen von Elementen ..................................................................18 Bedeutung der Klassen innerhalb der EJB-Spezifikation..............................................18 Bedeutung der Attribute innerhalb der EJB-Spezifikation .............................................19 Bedeutung der Methoden innerhalb der EJB-Spezifikation ..........................................19 Bedeutung der Engineering-Aktionen Apply EJB Pattern und Apply EJB 2.x Pattern ..19 Anhang: Die wichtigsten im Deployment Deskriptor generierten Einträge .......................20 Zugrunde liegendes Datenmodell .................................................................................20 <...enterprise-Beans.entity> ..........................................................................................21 <...enterprise-Beans.entity.cmp-field> ..........................................................................21 <...ejb-relation> .............................................................................................................22 <...query-method>.........................................................................................................23 2 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder <...ejb-ref>, <...ejb-local-ref>.........................................................................................24 JNDI-Namen .................................................................................................................24 Mapping zum Datenmodell ...........................................................................................25 3 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder EJBs für Borland JBuilder mit Innovator classiX unterstützen Was sind Enterprise JavaBeans? Enterprise JavaBeans (EJB) ist eine durch Sun Microsystems veröffentliche Spezifikation u.a. zur Modellierung von Klassen für eine komponentenbasierte verteilte Architektur von Business-Applikationen. Näheres über die Spezifikation finden Sie unter http://java.sun.com. EJB unterscheidet Entity Beans und Session Beans. Entity Beans sind persistent und werden mit einem Primärschlüssel ausgezeichnet, anhand dessen Instanzen identifiziert und gesucht werden können. Sind am Primärschlüssel mehrere Attribute beteiligt, dann werden sie zu einer eigenständigen Primärschlüsselklasse zusammengefasst. Session Beans dagegen sind nicht persistent. Sie sind einem Client-Prozess zugeordnet und werden beim Beenden des Client-Prozesses wieder zerstört. In verteilten Anwendungen wird mit einer Bean nicht direkt kommuniziert. Stattdessen stellt das Home-Interface einer Bean die Methoden zum Erstellen und Suchen von Instanzen zur Verfügung. Die fachlichen Methoden einer Bean werden über das Remote-Interface angesprochen. Zum Behandeln von Nachrichten sieht EJB den Einsatz von Message Driven Beans vor. Was ist JBuilder? Borland JBuilder ist eine plattformübergreifende Umgebung für die Entwicklung leistungsfähiger Enterprise-Java-Anwendungen. JBuilder beschleunigt die Entwicklung von EJB-, Web-, Web Services-, XML-, Mobile- und Datenbankanwendungen. http://www.borland.de/jbuilder/ Was ist BES? Der Borland Enterprise Server ist die standardisierte Laufzeitumgebung für alle BusinessAnwendungen der Plattformen J2EE, CORBA und Web Services. http://www.borland.de/bes/ Wie werden EJBs unterstützt? Innovator unterstützt EJBs innerhalb der objektorientierten Modellierung mit Hilfe der UML 1.4 für die Sprache Java durch die Edition Innovator Object classiX. Sie unterstützt die Modellierung und Generierung von EJBs gemäß der Spezifikation in der Version 2.x mit dem kostenpflichtigen Add-On Java EJB 2.x for Borland. In der Edition Innovator Data classiX erstellen Sie das korrespondierende Datenmodell. Die Deklaration von Klassen, Attributen und Methoden wird um spezielle Stereotypen und EJB-Elementeigenschaften ergänzt, die während der Modellierung und Generierung ausgewertet werden. Modelliert wird dabei jeweils nur die Bean-Klasse. Die abgeleiteten Klassen (z.B. Remote/Home-Interface und Primary-Key-Klasse) werden durch sogenannte Engineering-Aktionen erzeugt bzw. an die Modellierung der Bean-Klasse angepasst. Außerdem werden bei der Klasse die jeweiligen EJB-Methoden (ejBCreate, ejbActivate, ejbPassivate, etc.) erstellt. Folgende Bean-Klassen werden unterstützt: Container Managed Entity Bean Bean Managed Entity Bean Stateless Session Bean Stateful Session Bean Message Driven Bean Innovator Object classiX erweitert die Java-Deklaration für Klassen, Attribute und Methoden durch zusätzliche Elementeigenschaften (in UML als Tagged Values bezeichnet) und Stereotype. Durch Werte dieser Elementeigenschaften wird festgelegt, welche Rolle eine Klasse, ein Attribut bzw. eine Methode im Rahmen der EJB Spezifikation spielt. Für die EJB-Erweiterung werden zwei neue Klassendiagramme bereit gestellt. Ein Klassendiagramme mit dem Stereotyp «Java EJB Definition Class Diagram» enthält eine BeanKlasse und ihre Remote/Home-Schnittstellen sowie ggf. ihre Primary-Key-Klasse. In diesem Diagramm werden Kommandos zum Erstellen von EJB-Klassen, -Attributen und -Methoden bereitgestellt. Das Klassendiagramm mit dem Stereotyp «Java EJB Relationship Class Diagram» enthält nur Bean-Klassen, nicht aber deren zugehörigen Schnittstellenklassen. Dieses Diagramm dient zum Erstellen von Beziehungen zwischen EJBs. In diesem Diagramm werden Kommandos zum Erstellen von Beziehungen zwischen EJBs bereitgestellt. 4 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder Die zur Verfügung gestellte Engineering-Aktion Java Apply EJB Pattern macht die Annahme, dass im Modell Änderungen ausschließlich an Entity Beans, Session Beans oder Message Driven Beans vorgenommen werden. Diese Änderungen werden dann automatisch in das zugeordnete Home- bzw. Remote-Interface oder die zugeordnete Primary-KeyKlasse propagiert. Falls diese noch nicht existierten, werden sie erzeugt. Container Managed Entity Beans erstellen Sie aufgrund eines Datenmodells, das Sie zuvor mit der Edition Innovator Data erstellt haben, durch die Engineering Aktion Create EJBs from Database Model – einer Variante des ER-OO-Mappings. Die Engineering-Aktion konfiguriert die Verbindung zum Datenmodell und erzeugt die Container Managed Entity Beans zu den Tabellen des Datenmodells, die seit dem letzten Generatorlauf erzeugt wurden. Die Aktion erzeugt neben den Entity Beans auch deren Attribute und Beziehungen, nicht jedoch die Home/Remote-Schnittstellen dieser Bean-Klassen. Bei allen EJB-Klassen bzw. -Schnittstellen handelt es sich um ganz normale Java-Klassen mit dem Stereotyp «class» bzw. «interface». Die Java-Code-Generierung, das Forward-, Reverse- bzw. Round-Trip-Engineering behandelt diese Klassen genauso wie die anderen Java-Klassen. UML-Modell mit Java-Profil anlegen Ein UML-Modell mit der Modellvorlage UML Profile for Java ist Voraussetzung für die Generierung von Enterprise JavaBeans. Falls dies nicht existiert, legen Sie ein neues Java-Modell an. So gehen Sie vor Um ein neues UML-Modell mit der Vorlage UML Profile for Java anzulegen: » Selektieren Sie im Repositorybrowser das Repository, in dem das Modell erstellt werden soll (z.B. demo81de). » » » Wählen Sie den Menübefehl Administration>Anmelden, um sich als Administrator anzumelden. Wählen Sie den Menübefehl Modell>Neu>UML-Modell. Die gleichnamige Dialogbox erscheint. Geben Sie im Eingabefeld Name einen Namen für das UML-Modell ein. » Wählen Sie in der Auswahlliste Modellvorlage den Eintrag UML Profile for Java(en) bzw. UML Profile for Java(de). » Wählen Sie in der Auswahlliste Benutzer-/Gruppen-Konfiguration den Eintrag MID Demoteam for UML Profiles. » Schließen Sie die Dialogbox mit [OK]. » Öffnen Sie das Modell und melden Sie sich mit dem Namen MID GmbH und dem Passwort MID an. Modell für Enterprise JavaBeans konfigurieren Add-On Java EJB 2.x für Borland laden Das Add-On erfordert eine Modellstruktur, die Sie nach dem Laden des Add-Ons erstellen lassen. So gehen Sie vor Um das Add-On für die EJB-Version 2.x zu laden: » Wählen Sie im Modellbrowser den Menübefehl Modell>Administration> Anmelden... , um sich als Administrator anzumelden. » » » Wählen Sie Modell>Konfiguration>Modelloptionen laden.... Die gleichnamige Dialogbox erscheint. Aktivieren Sie das Alternativfeld Add-On in der Gruppe Konfigurationsdatei. Wählen Sie aus der Auswahlliste den Eintrag Java EJB 2.x for Borland. Die Auswahlfelder in der Gruppe Optionsgruppen lassen Sie unverändert. » Schließen Sie die Dialogbox mit [Anwenden] und [Schließen]. Eine Dialogbox informiert über die benötigte Lizenz. 5 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder So gehen Sie vor Um die erforderliche Modellstruktur herzustellen: » Wählen Sie den Menübefehl Modell>Konfiguration>Modellstruktur. » Selektieren Sie in der Liste Verfügbare Vorlagen den Eintrag Java EJB 2.x Add On. » » Wählen Sie in der Liste Struktur erstellen in Systempaketen das Systemmodell aus, dessen Struktur erweitert werden soll. Die Modellkonfiguration wird um folgende Elemente erweitert: EJB-Elementeigenschaften für Klassen, Attribute und Methoden EJB-Schablonen im Klassendiagramm für Klassen, Attribute, Methoden EJB-Auswahl- und -Anzeigefilter im Klassendiagramm für Klassen, Attribute und Methoden Zusätzliche Standardmethoden für EJB-Attribute Forward-Engineering-Aktionen für Klassen: Apply EJB Pattern 2.x (Anwendung des EJB 2.x-Patterns auf Java-Design-Klassen) Forward-Engineering-Aktionen für Komponenten: Java Generate EJB 2.x DD for Borland (Deployment Descriptor für Borland erzeugen) Forward-Engineering-Aktionen für Komponenten Object model to file (code generation for EJB 2.x) (spezielle Java-Code-Generierung für EJB 2.x) Reverse-Engineering-Aktion für Komponenten: Object model from file (reverse engineering for EJB 2.x) (spezieller Java-Code-Import für EJB 2.x) Forward-Engineering-Aktionen für Klassen Java Create Value Objects (Erstellen eines Value-Objekts basierend auf einer Entity Bean) Engineering-Aktionen: Create EJBs from Database Model (Entity Beans aus dem Datenmodell erzeugen) Schließen Sie die Dialogbox. Container Managed Entitiy Beans und das Datenmodell Datenmodell erstellen Container Managed Entity- (CMP) Beans und deren Container Managed Attributes erstellen Sie nicht direkt in der Edition Innovator Object classiX. Diese werden durch die Engineering Aktion Create EJBs from Database Model, einer Variante des ER-OOMappings, an Hand eines Datenmodells erzeugt. Das Datenmodell haben Sie mit der Edition Innovator Data erstellt. Achten Sie bitte darauf, dass alle Attribute des Datenmodells einem Datenelement mit Java/RMI-Implementierung zugeordnet sind. Wie Sie mit der Edition Innovator Data arbeiten, entnehmen Sie bitte der zugehörigen Dokumentation. So gehen Sie vor Um CMP-Entitäten an Hand des Datenmodells zu erzeugen: » Wählen Sie den Menübefehl Engineering>Aktion ausführen>Create EJBs from Database Model. » Beim erstmaligen Aufruf der Aktion wird die Verbindung zum Datenmodell konfiguriert. Dies erfordert Administratorrechte im Objektmodell. Es wird ein Dialog zur Auswahl eines Datenmodells gestartet. Nach Ausführung der Aktion finden Sie im Paket neu aus dem Datenmodell CMP-Beans zu den Tabellen des Datenmodells, die seit dem letzten Generatorlauf erzeugt wurden. Verschieben Sie die Entity-Bean-Klasse in ein Paket unterhalb von Java Design System. Die Aktion erzeugt neben Entity Beans auch deren Attribute und Beziehungen, nicht jedoch die Home/Remote-Schnittstellen der Bean-Klassen. Diese werden später durch die Forward-Engineering-Aktion Apply EJB 2.x Pattern erzeugt. 6 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder Beziehungen zwischen Beans modellieren Beziehungen zwischen Bean- Erstellen Sie zuerst ein Klassendiagramm vom Stereotyp «Java EJB relationship class Klassen im diagram». Klassendiagramm darstellen In Klassendiagrammen mit diesem Stereotyp werden Bean-Klasse und ihre Beziehungen, nicht jedoch die Home/Remote-Schnittstellen von Bean-Klassen dargestellt. Beziehungen zwischen EJBs werden durch Beziehungen zwischen den Bean-Klassen modelliert. Ebenso wie die CMP-Bean-Klassen selbst werden die Beziehungen zwischen CMP-BeanKlassen nicht explizit erstellt sondern bereits durch die Engineering-Aktion Create EJBs from Database Model bereitgestellt. Alle anderen Bean-Klassen und deren sonstige Beziehungsarten können in diesem Klassendiagramm explizit erstellt werden. So gehen Sie vor Um das Klassendiagramm zur Darstellung von Beziehungen zwischen EJBs zu erstellen: » Selektieren Sie ein Paket im Java Design System. » » Wählen Sie den Menübefehl Element>Neues Diagramm>Klassendiagramm>Java EJB Relationship Class Diagram. Öffnen Sie das neu erstellte Diagramm. In diesem Diagramm stehen Schablonen für das Erstellen von Bean-Klassen und deren Beziehungen zur Verfügung: Klassen Java EJB Entity Bean Java EJB Session Bean Beziehungen Java EJB Local Reference Java EJB Reference Bean-Klassen hinzufügen So gehen Sie vor Um Bean-Klassen hinzuzufügen: » Wählen Sie Einfügen>Klasse>Vorhandene hinzufügen. » Wählen Sie die Bean-Klassen aus, die in das Diagramm aufgenommen werden sollen. Im Diagramm werden die ausgewählten Bean-Klassen dargestellt. Bean Managed Persistence Entity Bean erstellen So gehen Sie vor Um eine Eine-Bean-Managed-Persistence-Bean-Klasse zu erstellen: » Wählen Sie Einfügen>Klasse>Java EJB Entity Bean. Im Diagramm wird die erstellte Bean-Managed-Persistence- (BMP) Entity-Bean-Klasse dargestellt. Stateless Session Bean erstellen So gehen Sie vor Um eine Bean-Klasse zu erstellen: » Wählen Sie Einfügen>Klasse>Java EJB Session Bean. Im Diagramm wird die erstellte Bean-Klasse dargestellt. Stateful Session Bean erstellen Um eine Stateful Session Bean zu erstellen, erzeugen Sie zu erst eine Stateless Session Bean. Dann ändern Sie deren Elementeigenschaft EJB. So gehen Sie vor Um eine Stateful Session Bean zu erstellen: » Erstellen Sie mit Einfügen>Klasse>Java EJB Session Bean eine neue Klasse. » Wählen Sie den Menübefehl Bearbeiten>Eigenschaften.... » Ändern Sie die Elementeigenschaft EJB in Stateful Session Bean. » Beenden Sie den Dialog mit [OK]. 7 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder Container Managed Relationship erstellen Container Managed Relationships (CMR) sind Beziehungen zwischen CMP-Beans, die vom EJB-Container verwaltet werden. Bei der Erstellung der CMP-Bean-Klassen durch die Engineering-Aktion Create EJBs from Database Model werden auch deren Beziehungen an Hand des Datenmodells als Assoziationen übernommen. Diese Assoziationen werden durch Änderung des Stereotyps zu einer CMR-Beziehung. So gehen Sie vor Um eine CMR-Beziehung zu erhalten: » Selektieren Sie beliebig viele Assoziationen zwischen CMP-Bean-Klassen. » Wählen Sie den Menübefehl Bearbeiten>Eigenschaften.... » Setzen Sie den Wert der Elementeigenschaft Stereotyp auf «javax::ejb:.EJBRelationship». Sie dürfen nur Assoziationen auswählen, die durch die Engineering-Aktion Create EJBs from Database Model erzeugt wurden, da diese Aktion die korrekte Verbindung der Assoziation mit dem Datenmodell herstellt. Lokale Referenz erstellen Wenn eine Bean-Klasse das Local-Interface einer anderen Bean nutzt, muss eine spezielle Assoziation modelliert werden. So gehen Sie vor Um ein lokale Referenz zu erstellen: » Selektieren Sie zuerst die Bean-Klasse, die referenziert, und dann die Bean-Klasse, deren Local-Interface referenziert werden soll. » Wählen Sie Einfügen>Assoziation>EJB Local Referenz. Im Diagramm wird die neu erstellte gerichtete Assoziation mit dem Stereotyp «javax::ejb:EJBLocalReference» dargestellt. Für EJBs, die durch eine CMRBeziehungen verbunden sind, ist diese Assoziation nicht nötig. Remote-Referenz erstellen Wenn eine Bean-Klasse das Remote-Interface einer anderen Bean nutzt, muss eine spezielle Assoziation modelliert werden. So gehen Sie vor Um eine Remote-Referenz zu erstellen: » Selektieren Sie zuerst die Bean-Klasse, die referenziert, und dann die Bean-Klasse, deren Remote-Interface referenziert werden soll. » Wählen Sie den Menübefehl Einfügen>Assoziation>EJB Referenz. Im Diagramm wird die neu erstellte gerichtete Assoziation mit dem Stereotyp «javax::ejb:.EJBReference» dargestellt. Anzeige von Attributen und Methoden festlegen Im Auslieferungszustand wird das context-Attribut, die vom EJB-Framework geforderten Methoden ejbLoad... und die Get/set-Methoden der persistenten Attribute einer CMP-Bean-Klasse nicht angezeigt. So gehen Sie vor Um einen anderen Auswahlfilter zu installieren: » Selektieren Sie im Java-Klassendiagramm alle Klassen mit Strg+A. EJB-Elementeigenschaften im Klassendiagramm anzeigen » Wählen Sie den Menübefehl Ansicht>Anzeigeoptionen.... » Wählen Sie im Register Attribut bzw. Methode in der Auswahlliste Auswahlfilter einen anderen Filter aus. Im Auslieferungszustand wird die Elementeigenschaft EJB im Diagramm angezeigt. So gehen Sie vor Um die Elementeigenschaften von Klassen, Attributen und Methoden im Klassendiagramm als Symbole anzuzeigen: » Selektieren Sie im Java-Klassendiagramm alle Klassen mit Strg+A. » Wählen Sie den Menübefehl Ansicht>Anzeigeoptionen.... » Wählen Sie im Register Klasse in der Auswahlliste Elementeigenschaften einen Eintrag aus. 8 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder » Wählen Sie im Register Attribut in der Auswahlliste Elementeigenschaften einen Eintrag aus. » Wählen Sie im Register Methode in der Auswahlliste Elementeigenschaften einen Eintrag aus. Schließen Sie die Dialogbox mit [OK]. » Attribute, Methoden und Home/Remote-Interface einer Bean modellieren Klassendiagramm für eine Bean-Klasse und ihre Schnittstellenklassen erstellen Erstellen Sie zuerst ein Klassendiagramm vom Stereotyp «Java EJB definition dlass diagram». In Klassendiagrammen mit diesem Stereotyp wird eine Bean-Klasse mit ihren Attributen und Methoden sowie ihren Home/Remote-Schnittstellen dargestellt. Außer beim Erstellen von Finder-Methoden, die direkt im Home-Interface erzeugt werden, arbeiten Sie immer auf der Bean-Klasse selbst. Die Erzeugung der gemäss EJB-Spezifikation nötigen Methoden, der Schnittstellenklassen und ggf. der Primary-Key-Klasse sowie die Propagierung der Methoden von der BeanKlasse in die Schnittstellen wird durch die Forward-Engineering-Aktionen Java Apply EJB 2.x Pattern erledigt. So gehen Sie vor Um das Klassendiagramm zur Darstellung der Bean-Klasse und ihrer Schnittstellen zu erstellen: » Selektieren Sie ein Paket im Java Design System. » » Wählen Sie den Menübefehl Element>Neues Diagramm>Klassendiagramm>Java EJB Definition class diagram. Öffnen Sie das neu erstellte Diagramm. In diesem Diagramm stehen Schablonen für das Erstellen von Bean-Klassen, deren Attributen und Methoden zur Verfügung: Klassen Java EJB Entity Bean Java EJB Session Bean Attribute Java EJB Primary Key Methoden Java EJB Business Method Java EJB Create Method Java EJB Finder Method Java EJB Select Method Java EJB Home Method Bean-Klasse hinzufügen So gehen Sie vor Um in das Diagramm eine Bean-Klasse auf zunehmen: » Wählen Sie Einfügen>Klasse>Vorhandene hinzufügen. » Wählen Sie die Bean-Klassen aus, die in das Diagramm aufgenommen werden sollen. Im Diagramm werden die ausgewählten Bean-Klassen dargestellt. Stateless Session Bean erstellen So gehen Sie vor Um eine Bean-Klasse zu erstellen: » Wählen Sie Einfügen>Klasse>Java EJB Session Bean. Im Diagramm wird die erstellte Stateless-Session-Bean-Klasse dargestellt. 9 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder Stateful Session Bean erstellen Um eine Stateful Session Bean zu erstellen, erzeugen Sie zuerst eine Stateles Session Bean. Dann ändern Sie deren Elementeigenschaft EJB. So gehen Sie vor Um eine Stateful Session Bean zu erstellen: » Erstellen Sie mit dem Befehl Einfügen>Klasse>Java EJB Session Bean eine neue Klasse. » Wählen Sie den Menübefehl Bearbeiten>Eigenschaften.... » Message Driven Bean erstellen Um Message Driven Bean zu erstellen erzeugen Sie zu erst eine Stateless Session Bean. Dann ändern Sie deren Elementeigenschaft EJB. So gehen Sie vor Um eine Message Driven Bean zu erstellen: » Erstellen Sie mit dem Befehl Einfügen>Klasse>Java EJB Session Bean eine neue Bean-Klasse. » Wählen Sie den Menübefehl Bearbeiten>Eigenschaften.... » Schnittstellen einer BeanKlasse festlegen Ändern Sie die Elementeigenschaft EJB in stateful session bean. Ändern Sie die Elementeigenschaft EJB in message driven bean. Ein Bean-Klasse kann entweder die Local/LocalHome- oder die Remote/Home-Schnittstelle oder auch beide Varianten anbieten. Die Schnittstellen werden durch die ForwardEngineering-Aktionen Java Apply EJB 2.x Pattern gemäß der Elementeigenschaft EJB-Interfaces einer Bean-Klasse erzeugt. So gehen Sie vor Um die Schnittstellen festzulegen: » Selektieren Sie die Bean-Klasse. » Wählen Sie den Menübefehl Bearbeiten>Eigenschaften.... » Setzen Sie den Wert der Elementeigenschaft EJB Interfaces. Business-Methode erstellen So gehen Sie vor Um die EJB Business-Methoden zu erstellen: » Selektieren Sie die Bean-Klasse oder eine ihrer Methoden. » Erstellen Sie eine neue Methode mit dem Befehl Einfügen>Methode>Java EJB Business Method. Creator-Methode erstellen Creator-Methoden werden in der Bean-Klasse erstellt und durch die Forward-EngineeringAktionen Java Apply EJB 2.x Pattern in das Home-Interface propagiert. Der Name einer Creator-Methode beginnt mit ejbCreate. So gehen Sie vor Um eine Creator-Methode zu erstellen: » Selektieren Sie die Bean-Klasse. » Wählen Sie den Menübefehl Einfügen>Methode>Java EJB Creator. Die neue Methode wird bei der Klasse im Diagramm angezeigt. Home-Methode erstellen Home-Methoden werden in der Bean-Klasse erstellt und durch die Forward-EngineeringAktionen Java Apply EJB 2.x Pattern in das Home-Interface propagiert. Der Name einer Home-Methode beginnt mit ejbHome. So gehen Sie vor Um eine Home-Methode zu erstellen: » Selektieren Sie die Bean-Klasse. » Wählen Sie den Menübefehl Einfügen>Methode>Java EJB Home. Die neue Methode wird bei der Klasse im Diagramm angezeigt. 10 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder Select-Methode erstellen Select-Methoden werden in der Bean-Klasse erstellt. Ihr Name beginnt mit ejbSelect. So gehen Sie vor Um eine Select-Methode zu erstellen: » Selektieren Sie die CMP-Bean-Klasse . » Wählen Sie den Menübefehl Einfügen>Methode>Java EJB Select bzw. Java EJB Home. Die neue Methode wird bei der Klasse im Diagramm angezeigt. Finder-Methoden erstellen Die Finder-Methoden einer CMP-Bean werden direkt im Home-Interface erstellt. Diese Finder-Methoden werden vom EJB-Container an Hand der in EQL formulierten Spezifikation implementiert. So gehen Sie vor Um eine Finder-Methode zu erstellen: » Selektieren Sie das Home-Interface einer CMP-Bean. » Wählen Sie den Menübefehl Erstellen>Java EJB Finder. Die neue Finder-Methode wird bei dem Home-Interface im Diagramm angezeigt. So gehen Sie vor Um einen EQL-Ausdruck zu definieren: » Selektieren Sie eine Finder-Methode. » Wählen Sie den Menübefehl Bearbeiten>Eigenschaften.... Die gleichnamige Dialogbox erscheint. » Anzeige von Attributen und Methoden festlegen Setzen Sie den Wert der Elementeigenschaft EJB QL. Im Auslieferungszustand wird das context-Attribut sowie die vom EJB Framework geforderten Methoden ejbLoad... nicht angezeigt. So gehen Sie vor Um einen anderen Auswahlfilter zu installieren: » Selektieren Sie im Java-Klassendiagramm alle Klassen mit Strg+A. » Wählen Sie den Menübefehl Ansicht>Anzeigeoptionen.... Die gleichnamige Dialogbox erscheint. EJB-Elementeigenschaften im Klassendiagramm anzeigen » Wählen Sie im Register Attribute bzw. Methoden in der Auswahlliste Auswahlfilter einen anderen Filter aus. » Beenden Sie den Dialog mit [OK]. So gehen Sie vor Um die EJB-Elementeigenschaften von Klassen, Attributen und Methoden im Klassendiagramm als Symbole anzuzeigen: » Selektieren Sie im Java-Klassendiagramm alle Klassen mit Strg+A. » Wählen Sie den Menübefehl Ansicht>Anzeigeoptionen.... Die gleichnamige Dialogbox erscheint. » » » » Wählen Sie im Register Klasse in der Auswahlliste Elementeigenschaften einen Eintrag aus. Wählen Sie im Register Attribut in der Auswahlliste Elementeigenschaften einen Eintrag aus. Wählen Sie im Register Methode in der Auswahlliste Elementeigenschaften einen Eintrag aus. Beenden Sie den Dialog mit [OK]. 11 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder Beispiel für Container Managed Entity Bean vor Anwendung der Engineering-Aktion Java Apply EJB Pattern Forward-Engineering-Aktion Java Apply EJB 2.x Pattern Nachdem Sie die grundlegenden Elemente der Bean-Klassen erstellt haben, sollen nun die noch fehlenden Elemente gemäß der EJB-Spezifikation erstellt werden. So gehen Sie vor Um zusätzliche Klassen und Beziehungen gemäß der EJB-Spezifikation zu erzeugen: » Selektieren Sie die Bean-Klasse. » Wählen Sie den Menübefehl Engineering>Forward/Reverse...>Java Apply EJB 2.x Pattern. » Beenden Sie den Dialog mit [Anwenden] und [Schließen]. Für Container Managed Entity Beans und Bean Managed Entity Beans erzeugt die Engineering-Aktion Java Apply EJB 2.x Pattern folgende Elemente: Zusätzliche Klassen und Abhängigkeiten Home-Interface (Interface mit der Eigenschaft EJB auf LocalHome- bzw. HomeInterface) Remote-Interface (Interface mit der Eigenschaft EJB auf Remote- bzw. Local-Interface) Primary-Key-Klasse, falls in der Bean-Klasse ein zusammengesetzter Primärschlüssel definiert wurde (mehrere Attribute mit Eigenschaft EJB auf primary key) Jeweils eine Abhängigkeit von der Bean-Klasse zum Home-Interface, RemoteInterface bzw. zur Primary-Key-Klasse Es wird zusätzlich bei der CMP-Bean-Klasse die Eigenschaft istAbstrakt = ja gesetzt. Member in der Bean-Klasse Falls nicht vorhanden: ein Attribut context vom Typ EntityContext bzw. SessionContext. Falls nicht vorhanden: die Methoden ejbCreate, ejbPostCreate, ejbRemove, ejbActivate, ejbPassivate, setEntityContext, unsetEntityContext, (Getter/Setter für context), ejbLoad und ejbStore Für Container Managed Attribute werden abstrakte Getter/Setter-Methoden erstellt. Für jede CMR-Assoziation, an der eine CMP-Entity-Bean beteiligt ist, wird ein CMRField erzeugt. Hierbei wird die Navigierbarkeit der Assoziation und deren Rollennamen berücksichtigt. Für sonstige Assoziationen mit Verknüpfung zum Datenmodell einer CMP-Entity-Bean werden CMP-Attribute für die Spalten des Fremdschlüssels erzeugt. Hierbei wird ebenfalls die Navigierbarkeit der Assoziation und deren Rollennamen berücksichtigt. Member im Remote-Interface Alle Methoden der Bean-Klasse, die den Eigenschaftswert business method haben, werden angepasst und in das Remote-Interface kopiert. 12 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder Member im Home-Interface Alle Finder-, Create- und Home-Methoden der Bean-Klasse werden in das HomeInterface kopiert (alle Methoden namens ejbCreate*, ejbFind*, ejbHome*) Member in der Bean-Klasse Alle anderen Methoden bleiben in der Bean-Klasse (speziell Methoden namens ejbSelect*). Weiterhin werden nötige Vererbungsdeklarationen und Importe aktualisiert. Beispiel für Container-Manage-Entity Bean nach Anwendung der Engineering-Aktion Java Apply EJB 2.x Pattern Verzeichnisstruktur von JBuilder Beim Start von JBuilder wird das Basisverzeichnis zum Projekt durch die Position der JBuilder Projektdatei (jpx) bestimmt. Die weitere Struktur des Projektverzeichnisses wird durch die enthaltenen Module bestimmt. Ein EJB-Modul besitzt typischerweise ein Unterverzeichnis, das so heißt wie das EJB-Jar-Modul, das erstellt werden soll. Dort befindet sich das Verzeichnis META-INF, das u.a. die Deployment Descriptors enthält. Ebenfalls im EJBModul-Verzeichnis werden die compilierten Java Klassendateien abgelegt, die ins Archiv gepackt werden sollen. In JBuilder existiert oft ein projektübergreifendes Source-CodeVerzeichnis, das sowohl vom JBuilder Editor als auch vom Round-Trip-Engineering (Forward-Engineering, etc.) von Innovator Object classiX genutzt werden soll. So gehen Sie vor Um das JBuilder Source-Code-Verzeichnis einzustellen: » Selektieren Sie im Modellbrowser das Paket Java Implementation System. » Wählen Sie den Menübefehl Element>Eigenschaften. » Die gleichnamige Dialogbox erscheint. Wechseln Sie in das Register Adresse, und stellen Sie Ihr globales Source-CodeVerzeichnis ein. Schließen Sie die Dialogbox mit [OK]. » So gehen Sie vor Um das Paket für alle JBuilder Archive zu erstellen: » Selektieren Sie das Paket Java Implementation System. » Wählen Sie den Menübefehl Element>Neu>Paket>Neu. » Das Paket wird angelegt und ist selektiert. Wählen Sie den Menübefehl Element>Eigenschaften. » Die gleichnamige Dialogbox erscheint. Geben Sie im Register Name den Namen der Archiv-Wurzel ein. » Klicken Sie auf die Schaltfläche [Anwenden]. 13 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder » Wechseln Sie in das Register Elementeigenschaften, und setzen Sie die Eigenschaften topLevel und Adresse auf ja. » Klicken Sie auf die Schaltfläche [Anwenden]. » Wechseln Sie in das Register Adresse, und stellen Sie Ihr globales JBuilder-ProjektVerzeichnis ein. Schließen Sie die Dialogbox mit [OK]. » So gehen Sie vor Um das Paket für ein EJB-Modul zu erstellen: » Selektieren Sie das Paket Java Implementation System. » Wählen Sie den Menübefehl Element>Neu>Paket>Neu. » Das Paket wird angelegt und ist selektiert. Wählen Sie den Menübefehl Element>Eigenschaften,. » Die gleichnamige Dialogbox erscheint. Geben Sie im Register Name den EJB-Archivnamen ein. » Schließen Sie die Dialogbox mit [OK]. So gehen Sie vor Um die Projektstruktur eines EJB-Projekts nachzubilden: » Selektieren Sie das Paket des EJB-Projekts. » Wählen Sie den Menübefehl Element>Neu>Paket>Neu. » Das Paket wird angelegt und ist selektiert. Wählen Sie den Menübefehl Element>Eigenschaften,. » Die gleichnamige Dialogbox erscheint. Geben Sie im Register Name META-INF ein. Schließen Sie die Dialogbox mit [OK]. Beispiel für eine Paketstruktur 14 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder Aktionen für die SourceCode-Generierung Nach dem Erstellen der Projektstruktur können Sie Java-Komponenten erzeugen und den Source-Code generieren. Folgende Befehle sind unter Engineering>Forward/ Reverse... zu finden: Forward-Aktionen im Register Klasse Java Assign to Default Java File Die Aktion erstellt Java-Komponenten im Paket Java Implementaion System auf Basis der selektierten Klassen. Die Java-Komponenten stellen die Basis für die Source-Code-Generierung dar. Forward-Aktionen im Register Komponente Für die EJB 2.x -Code-Generierung wählen Sie die Aktion Object Model to File (code generation EJB 2.x) Die Aktion erzeugt Java-Code und schreibt die Java-Dateien in das Verzeichnis, welches im Modellbrowser bei dem Paket Java Implementation System in der Eigenschaft Adresse hinterlegt ist. Bitte beachten Sie, dass für EJB 2.x die Container Managed Attributes nicht in den SourceCode übernommen werden. Diese werden gemäß der Spezifikation im DeploymentDescriptor verwaltet. Die Attribute bleiben aber im Klassenmodell bestehen. So gehen Sie vor Um Source-Code zu generieren: » Selektieren Sie im Klassendiagramm oder im Modellbrowser eine oder mehrere Klassen. » Wählen Sie den Menübefehl Engineering>Forward/Reverse.... » Aktivieren Sie das Alternativfeld Forward in der Gruppe Aktionen. » Wählen Sie im Register Klasse die Aktion Java Assign to Default Java File. » Bestätigen Sie mit [Anwenden]. » Wechseln Sie in das Register Komponente. » Wählen Sie die Aktion Object Model to File. » Wählen Sie für die EJB 2.x -Generierung die Aktion Object Model to File (code generation EJB 2.x). » Beenden Sie die Dialogbox mit [Anwenden] und [Schließen]. EJB-Deployment-Descriptor erstellen EJBs in JBuilder vorbereiten Dafür erstellen Sie in JBuilder ein neues Projekt mit einem leeren EJB-Modul. Stellen Sie bitte sicher, dass das Source-Code-Projektverzeichnis mit dem Verzeichnis übereinstimmt, in welches Sie von Innovator Object classiX aus den Source-Code generiert haben. Das EJB-Modul sollte so bezeichnet werden, dass es mit dem Innovator-Paketnamen für das EJB-Archiv übereinstimmt. Anschließend wechseln Sie zu Innovator Object classiX und füllen das EJB-Modul durch die Generierung des EJB-Deployment-Descriptors. Komponente ejb-jar.xml erstellen Ein EJB-Modul fasst mehrere EJBs zusammen. Im EJB-Deployment-Descriptor eines EJBModuls ist u.a. beschrieben, wie die EJB-Klasse und die Remote/Home-Schnittstellen einer EJB heißen, welche CMP-Attribute eine CMP-Entity-Bean besitzt, welche Beziehungen zwischen CMP-Entity-Beans existieren, mit welchen JNDI-Namen eine Bean-Klasse die Remote/Local-Schnittstelle einer anderen Bean referenziert. » In Innovator Object classiX wird ein EJB-Modul durch den Deployment-Descriptor repräsentiert. Der Deployment Descriptor ist eine Komponente vom Stereotyp «EJB 2.x Deployment Descriptor» mit dem Namen ejb-jar.xml, die Sie im Paket METAINF unterhalb des Projektpakets erstellen. Dieser Komponente ordnen Sie die BeanKlassen zu, die im EJB-Modul enthalten sein sollen. Die Forward-Engineering-Aktion Java Generate EJB 2.x DD for Borland generiert den Deployment Descriptor vollständig und direkt im META-INFVerzeichnis des EJB-Moduls. Die Generierung erfolgt überschreibend, Änderungen sollten in Innovator Object classiX erfolgen. 15 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder So gehen Sie vor Um die Komponente für den Deployment Descriptor zu erstellen: » Selektieren Sie das Paket META-INF. » Wählen Sie Element>Neu>Komponente>EJB 2.x Deployment Descriptor. Benennen Sie die Komponente ggf. in ejb-jar.xml um. So gehen Sie vor Um einem Deployment-Descriptor EJBs zu zuordnen: » Selektieren Sie den Deployment Descriptor. » Wählen Sie Engineering>Komponente>Modellelemente zuordnen. » Wählen Sie im Dialog die Bean-Klassen des EJB-Moduls aus. So gehen Sie vor Um einen Deployment Descriptor zu exportieren: » Selektieren Sie den Deployment Descriptor selbst oder » Selektieren Sie eine Bean-Klasse die dem Deployment Descriptor zugeordnet ist. » Führen Sie die Forward-Engineering-Aktionen Java Generate EJB 2.x DD for Borland aus. » EJBs in JBuilder bearbeiten Nachdem Sie Source-Code und die EJB-Deployment-Descriptoren erzeugt haben, können Sie mit den EJBs in JBuilder arbeiten. Wechseln Sie dazu in den JBuilder und doppelclicken Sie das EJB-Modul. JBuilder ermittelt nun alle Beans und Klassen und zeigt Ihnen die Beans in grafischer Form. Da alle Descriptoren überschreibend erzeugt werden, nochmals der Hinweis, dass alle Änderungen an den EJBs im Innovator Design-Modell erfolgen müssen! Forward-Engineering-Aktion Die Forward-Engineering-Aktion Java Generate EJB 2.x DD for Borland Java Generate EJB 2.x DD for erzeugt nicht nur den von Sun im Rahmen der EJB-Spezifikation standardisierten Borland ejb-jar.xml-Descriptor, sondern erstellt noch einen weiteren Borland-spezifische Descriptor. ejb-borland.xml enthält die JNDI-Namen der Beans (ejb/"Namen des Remote-Interfaces") und alle Information zum Datenbankschema (aus Innovator Data). Value Object erzeugen Forward-Engineering-Aktion Java Create Value Objects Der Einsatz von Value Objects wird in der EJB-Architektur oft empfohlen. Value Objects sind eine serialisierbare Java-Klasse zum Datenaustausch zwischen Entity Beans und ihren Klienten. Das Value Object einer CMP-Entity enthält deren persistente Attribute. Der Einsatz von Value Objects im Schnittstellenentwurf kann die Kommunikation zwischen einer Entity Bean und ihren Klienten minimieren. So gehen Sie vor Um ein Value Object zu erzeugen: » Selektieren Sie eine CMP-Entity-Bean . » Wählen Sie die Forward-Engineering-Aktion Java Create Value Objects. Es wird eine Value Object-Klasse für jedes Attribut aus der selektierten Klasse erzeugt, die ein Attribut sowie dessen Get/Set enthält. Attribute vom Stereotyp «association implementer» werden nicht übernommen. 16 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder Anhang: Beschreibung des Add-Ons Java EJB Zweck Das Add-On unterstützt die Modellierung von Anwendungen, deren Architektur durch die Enterprise JavaBeans-Spezifikation vorgegeben ist. Es wird Version 2.x dieser Spezifikation unterstützt. Grundlegende Informationen zum Thema Enterprise JavaBeans, im Folgenden kurz als EJB bezeichnet, können beispielsweise unter http://java.sun.com gefunden werden. Vorausgesetzte Profile Voraussetzung ist die Modellvorlage UML Profile for Java. Benötigte Elemente des UML-Metamodells Elementeigenschaften (Tagged Values) Metamodell Eigenschaft Class EJB Eigenschaftswert none (Default) stateless session bean stateful session bean container managed entity bean bean managed entity bean home interface remote interface primary key class local home interface local interface message driven bean EJB interface none (Default) local remote Local + remote Attribute EJB none (Default) cmp field cmr fieled primary key field Stereotyp javax::ejb::EJBCmpField javax::ejb::EJBCmrField local remote Local + remote Stereotyp javax::ejb::EJBFinderMethod javax::ejb::EJBRemoteMethod javax::ejb::EJBCreateMethod javax::ejb::EJBPrimaryKeyField Operation EJB none (Default) business method creator single object finder multi object finder home method EJB interface none (Default) 17 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder Auswahlfilter Für jede der obigen Elementeigenschaften steht ein Auswahlfilter zur Verfügung. Der Name des Filters ergibt sich aus dem Tag-Wert erweitert um das Präfix Is EJB. Anzeigefilter Im Klassendiagramm kann für Klassen, Attribute und Methoden die Eigenschaft EJB als Icon dargestellt werden. Hierfür stehen die Anzeigefilter EJB bzw. Visibility+EJB zur Verfügung. Anzeigeschablonen Diese Anzeigefilter werden bei der Definition der Anzeigeschablonen benötigt. Für Klassendiagramme stehen die Anzeigeschablonen Java EJB Create und Java EJB Add zur Verfügung. Kommandos zum Erstellen von Elementen Schablonen zum Erzeugen von Elementen Metamodell Name der Schablone Eigenschaft EJB Class EJB Session Bean (stateless) stateless session bean EJB Entity Bean (container man- container managed entity bean EJB Primary Key primary key EJB Container Managed Attribute container managed EJB Bussiness Method business method EJB Creator Creator EJB Finder single-object finder EJB Select none Attribute Operation Bedeutung der Klassen innerhalb der EJB-Spezifikation Entity Bean Eine Entity Bean wird durch eine Klasse modelliert, deren Eigenschaft EJB den Wert bean managed entity bean oder container managed entity bean besitzt. Eine bean managed entity bean ist für ihre Persistenz selbst verantwortlich. Session Bean Eine Session Bean wird durch eine Klasse modelliert, deren Eigenschaft EJB den Wert stateful session bean oder stateless session bean besitzt. Zustandsbehaftete Session Beans werden durch den Wert stateful session bean ausgezeichnet. Remote/Home-Interface Ein Remote- bzw. Home-Interface wird durch eine Klasse mit dem Stereotyp «interface» modelliert, deren Eigenschaft EJB den Wert home interface oder remote interface besitzt. Local/LocalHome-Interface Ein Local- bzw. ein LocalHome-Interface wird durch eine Klasse mit dem Stereotyp «interface» modelliert, deren Eigenschaft EJB den Wert local home interface oder local interface besitzt. Primary Key Class Die Primary Key Class einer EJB-Klasse wird durch eine Klasse modelliert, deren Eigenschaft EJB den Wert primary key class besitzt. Message Driven Bean Message Driven Beans werden durch eine Klasse modelliert, deren Eigenschaft EJB den Wert message driven bean besitzt. Message Driven Beans wurden in der Version 2.0 der EJB-Spezifikation eingeführt. 18 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder Sonstige Klassen Klassen, deren Eigenschaft EJB den Wert none besitzen, spielen keine besondere Rolle im Rahmen der EJB-Spezifikation. Bedeutung der Attribute innerhalb der EJB-Spezifikation Die Eigenschaft EJB von Attributen wird nur für Attribute von Entity Beans ausgewertet. Primary Key Attribute Attribute, deren Eigenschaft EJB den Wert primary key besitzt, sind Bestandteil des Primärschlüssels der Entity Bean. Falls die Entity Bean einen zusammengesetzten Schlüssel besitzt, ist die Angabe einer Primary Key Class erforderlich. Container Managed Attribute Dieser Wert ist nur zulässig für Attribute einer Entity Bean der Art container managed entity bean. Attribute, deren Eigenschaft EJB den Wert container managed besitzt, sind persistent. Sonstige Attribute Attribute, deren Eigenschaft EJB den Wert none besitzen, spielen keine besondere Rolle im Rahmen der EJB-Spezifikation. Bedeutung der Methoden innerhalb der EJB-Spezifikation Die Eigenschaft EJB von Methoden wird nur für Methoden von Entity bzw. Session Beans ausgewertet. Business Method Methoden einer Bean-Klasse, die Bestandteil des Remote-Interface sind, werden durch den Wert business method der Eigenschaft EJB ausgezeichnet. Creator Method Diese Methoden der Bean-Klasse sind auch Bestandteil des Home-Interface und dienen zum Erzeugen einer Entity Bean. Creator-Methoden werden durch den Wert creator der Eigenschaft EJB ausgezeichnet. Single/Multi Object Finder Method Diese Werte sind nur zulässig für Methoden einer Entity Bean. Diese Methoden der Bean-Klasse sind auch Bestandteil des Home-Interface und werden zum Suchen einer Entity Bean benutzt. Finder-Methoden werden durch den Wert single object finder bzw. multi object finder der Eigenschaft EJB ausgezeichnet. Bei der Suche mit einer Multi Object Finder-Methode kann mehr als ein Treffer geliefert werden. Das Suchkriterium wird in EQL formuliert. Select Method Diese Methoden der Bean-Klasse dienen zum Suchen einer Entity Bean und werden wie die Finder-Methoden mit EQL formuliert. Sie werden in keine Schnittstelle propagiert. Home Method Dies sind Business-Methoden, die im Home-Interface zur Verfügung gestellt werden. Sonstige Methoden Methoden, deren Eigenschaft EJB den Wert none besitzen, spielen keine besondere Rolle im Rahmen der EJB-Spezifikation. Bedeutung der Engineering-Aktionen Apply EJB Pattern und Apply EJB 2.x Pattern Bei selektierter Entity Bean oder Session Bean kann die Engineering-Aktion Apply EJB Pattern angewandt werden. Durch diese Aktion werden die Creator- und die Finder-Methoden der Bean-Klasse in das Home-Interface und deren Business-Methoden in das Remote-Interface propagiert. Die Attribute eines mehrteiligen Schlüssels werden in die Primary Key Class der Bean propagiert. Näheres zur Arbeitsweise und den Optionen der Engineering-Aktion entnehmen Sie bitte der Hilfe der zugehörigen Auswertung ejbcrea.tcl. 19 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder Anhang: Die wichtigsten im Deployment Deskriptor generierten Einträge Zugrunde liegendes Datenmodell Eine Firma besitzt viele Abteilungen. Jede Abteilung ist genau einer Firma zugeordnet. Attribute der Tabelle Firma Attribute der Tabelle Abteilung Der Fremdschlüssel FirmaId bildet die Beziehung zwischen Firma und Abteilung ab. 20 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder <...enterprise-Beans.entity> Dieser Tag enthält die Definition einer Entity Bean. In Innovator Object classiX wird eine Entity Bean durch Setzen des Eigenschaftswertes EJB auf „container managed entity bean“ modelliert. Durch den Eigenschaftswert EJB interfaces wird festgelegt, ob lokale bzw. Remote-Schnittstellen erzeugt werden sollen. Die Schnittstellen einer Bean-Klasse werden durch Abhängigkeiten mit den entsprechenden Stereotypen («javax::ejb::EJBRealizeLocalHome», «...EJBRealizeLocal», ...) an die Bean-Klasse angebunden. Hinweis: Das Erzeugen der Schnittstellenklasse und der Abhängigkeiten wird automatisch durch die Forward-Engineering-Aktion "Apply EJB 2.X Pattern" durchgeführt. Diese Aktion wird durch die Eigenschaftswerte EJB bzw. EJB interfaces der Bean-Klasse gesteuert. <...enterpriseBeans.entity.cmp-field> Dieser Tag enthält die Definition eines CMP-Feldes. In Innovator Object classiX werden CMP Entity Beans und ihre CMP-Attribute aus dem Datenmodell generiert. Bei einem CMPAttribut besitzt die Eigenschaft EJB den Wert cmp field. Hinweis: Nach der Übernahmen einer Entity Bean aus dem Datenmodell wird das Erzeugen eines CMP-Attributes automatisch durch die Forward-Engineering-Aktion "Apply EJB 2.X Pattern" durchgeführt. Diese Aktion erstellt auch die get/set-Methoden eines CMP-Feldes. 21 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder <...ejb-relation> Dieser Tag enthält die Definition einer CMR-Beziehung. Generell werden bei der Übernahmen aus dem Datenmodell "normale" Assoziationen produziert. Diese können dann vom Modellierer durch Ändern des Stereotyps auf «javax::ejb:.EJBRelationship» zu CMRBeziehungen gemacht werden. Zum Zeitpunkt der Übernahme ist die Zuordnung der EJBs zu EJB-Modulen noch nicht bekannt. Dies wird erst in einem nachfolgenden Designschritt festgelegt, der wesentlichen Einfluss auf die Verteilbarkeit der Applikation hat. Da CMRBeziehungen die Grenze eines EJB-Moduls nicht überschreiten können, kann die Auszeichnung einer Assoziation als CMR-Beziehung erst erfolgen, wenn die Aufteilung der Beans auf die Module vorgenommen wurde. Hinweis: Nach dem Setzen des Stereotyps auf «javax::ejb:.EJBRelationship» durch die Forward-Engineering-Aktion "Apply EJB 2.X Pattern" werden automatisch die zugehörigen CMR-Felder und deren get/set-Methoden erstellt. Bei der Erzeugung der CMR-Felder werden die Rollennamen der Beziehung berücksichtigt. Falls eine Beziehung nicht als CMRBeziehung abgebildet wird, dann wird statt des CMR-Feldes ggf. ein CMP-Feld mit dem Fremdschlüssel generiert. Im Beispiel würde also die Bean FAAbteilungEntEJB nicht das CMR-Feld firma (vom Typ FAFirmaEnt) enthalten, sondern ein CMP-Feld firmaId vom Typ Integer. 22 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder <...query-method> Dieser Tag enthält die Definition einer Finder-Methode. Finder-Methoden werden im HomeInterface einer Klasse definiert. Die zu einer Finder-Methode erforderliche EJB QL wird über den Eigenschaftswertes EJB QL festgelegt. 23 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder <...ejb-ref>, <...ejb-local-ref> Um die Remote/Home-Schnittstelle einer Bean nutzen zu können, muss im Deployment Deskriptor eine Referenz bzw. eine lokale Referenz eingetragen werden. Dies geschieht durch die Modellierung einer Abhängigkeit von der aufrufenden zu der aufgerufenen Bean. Die Art der Referenz wird über den Stereotyp «javax:.ejb:.EJBLocalReference» bzw. «javax:.ejb:.EJBReference» festgelegt. JNDI-Namen Die Schnittstelle einer Bean kann zur Laufzeit nicht direkt benutzt werden. Statt dessen muss sie zur Laufzeit durch die Angabe eines Namens ermittelt werden (Lookup über JNDINamen). Innovator Object classiX nimmt als JNDI-Namen den Namen der RemoteSchnittstelle einer Bean. 24 HowTo Unterstützung von Enterprise JavaBeans für Borland JBuilder Da in Innovator die CMP-Beans aus dem Datenmodell generiert werden, steht im JBuilder die vollständige Abbildungsinformation zur Verfügung. Neben der Schema/TabellenDefinition werden auch das Mapping und die Relationen vollständig erzeugt. Mapping zum Datenmodell Copyright © 2010 MID Enterprise Software Solutions GmbH Bei Fragen wenden Sie sich bitte an unsere Hotline Telefon: +49 (0)911 / 9 68 36 -22, E-Mail: [email protected]. Dieses Dokument finden Sie neben anderen im exklusiven Login-Download-Bereich für INNOVATOR-Wartungskunden unter http://www.mid.de/support/. Ihre MID MID Enterprise Software Solutions GmbH, Eibacher Hauptstr. 141, D-90451 Nürnberg Telefon: +49 (0)911 / 9 68 36 -0, Fax: +49 (0)911 / 9 68 36 -10 E-Mail: [email protected], Internet: http://www.mid.de Innovator_11.2_HowTo_EJB_JBuilder_100630.doc 67 25