Anwendung eines Enterprise Java Beans EJB Server EJB Container Remote Interface Home Interface EJB Object Der EJB Container kümmert sich um die Kommunikation des Beans mit anderen Komponenten, wobei er das Home und das Remote Interface benutzt.
Mehrschichtenmodell (Multi Tier) Client Tier Browser Web Tier JSP Program Enterprise Java Beans Tier EJB Enterprise Information Systems Tier Data Source
Bestandteile einer J2EE Applikation (1) (Quelle: Alexander Dunn, Java 2EEE, dtv, 2001) Hersteller HerstellerPK META-INF HerstellerHome HerstellerBean ejb-jar.xml hersteller-webapp META-INF WEB-INF Hersteller.jar application.xml Test.jsp web.xml orion/applications/hersteller
Bestandteile einer J2EE Applikation (2) (Quelle: Alexander Dunn, Java 2EEE, dtv, 2001) Server-spezifische Konfigurationsdateien orion/config default-web-site.xml data-sources.xml server.xml z.b.: Einstellen des Ports Adresse des jar-files wenn es von eine jsp- Seite aufgerufen wird z.b.: Auswahl der Datenbank z.b.: Adresse des jar-files
Hersteller (Remote Interface) Definiert alle Methoden die vom Client zum Arbeiten mit den Bean benötigt werden Hier: public String getherstellername() public void setherstellername(string name) Das Remote Interface implementiert das Interface EJBObject (aus dem Paket javax.ejb) java.rmi.remoteexception: Diese Ausnahme wird bei kommunikationsbedingten Problemen aufgeworfen. (rmi: remote method invocation)
HerstellerHome (Home Interface) Erweitert das Interface EJBHome (aus dem Paket javax.ejb) Erlaubt das Anlegen, Finden und Entfernen von EJB Objekten CreateException: muss in allen create-methoden deklariert werde FinderException: muss in allen find-methoden deklariert werden RemoteException: Diese Ausnahme wird bei kommunikationsbedingten Problemen aufgeworfen
HerstellerBean Dient zum Einfügen, Ändern und Entfernen von Daten Implementiert das Interface EntityBean (aus der Klasse javax.ejb) Der Client-Aufruf der create()-methode des EJBHome veranlasst den Container die ejbcreate()-methode aufzurufen
HerstellerPK (Primärschlüsselklasse) Zuordnung der Datenbankelemente zu den Bean-Feldern Alle Objekte die java.io.serializable implementieren sind serialisierbar. Bei der Serialisierung werden Objekte in einen Bytestream übersetzt und übertragen
ejb-jar.xml (Deployment Descriptor) <ejb-jar> Wurzelelement <enterprise-beans> 3 Subelemente: <enitity><session> <message-driven> <description> Beanbeschreibung <ejb-name> Name des Beans <home> Name des Home Interface (mit Pfadangabe) <remote> Name des Remote Interface (mit Pfadangabe) <ejb-class> Name der Entity EJB Klasse (mit Pfadangabe) <persistence-type> Persistenztyp (Container- oder Bean-verwaltet) <prim-key-class> Primärschlüsselklasse (bei Entity Beans) <reentrant> Rekursive Aufrufe zulässig? <cmp-field> Felder die vom Container verwaltet werden <field-name> Feldname <resource-ref> Regelt den Datenbankzugriff <res-ref-name> Name der Verbindung <res-type> Art der Verbindung <res-auth> Legt fest wer die Authentifizierung durchführt
data-sources.xml In dieser Datei finden sich alle notwendigen Informationen zur verwendeten Datenbank. (Klassenname, Typ, Treiber etc.) <data-sources> <data-source> class name location xa-location ejb-location connection-driver username password url inactivity-timeout connection-retry-interval Konfiguration der Datenquellen Installierte Datenquelle Klassenname Angezeigter Name JNDI-Pfad Klassenname des JDBC-Treibers Benutzername für Login Passwort für Login Cache für nicht genutzte Informationen Wartezeit für neuen Verbindungsversuch
application.xml Application Deployment Descriptor. Gibt dem Server Informationen über das JAR-File. <application> Wurzelelement <display-name> <module> <ejb> <web> <web-uri> <context-root> Gibt den Applikationsnamen an ejb, java oder web-element URI des ejb.jar WEB-URI URI eines Web Application Files Context Root der Applikation
server.xml Konfiguration für den Application Server <application-server> Wurzelelement <application> application-directory deployment-directory name path auto-start Verzeichnis für Applikationen Deployment Informatioen Bezeichner der Applikation Pfadangabe Automatischer Start
Test.jsp Diese jsp-seite erzeugt einen Eintrag in der Datenbank und liest ihn wieder aus. Der Wert wird vom Browser mittels HTML ausgegeben. new InitialContext(): jndicontext.lookup(): Suchen des Objekts über seinen jndi- Namen herstellerhome.create(): Erzeugen eines Herstellerobjekts (liefert EJB Remote zurück) HerstellerHome herstellerhome = (HerstellerHome) javax.rmi.portableremoteobject.narrow(ref, HerstellerHome.class): instanziiert eine Remote-Referenz auf das Home Interface
RMI (Remote Method Invocation) Nachrichten an entfernte Objekte senden und die Antworten empfangen.
JNDI Java Naming and Directory Interface Dient zum Zugriff auf beliebige Namens- und Verzeichnisdienste. Namensdienst: Liefert ein Objekt zu einem Namen (Beispiel: DNS) Verzeichnisdienst: Stellt Information in einer hierarchischen Struktur zur Verfügung JNDI-Context: Namensraum in dem jedes Objekt durch einen eindeutigen Namen gekennzeichnet ist InitialContext: Einstiegspunkt zur Suche von Objekten Für jedes Deployment einer Bean ist ein Home-Interface- Object in JNDI eingetragen und somit für den Client verfügbar Der Container bietet eine JNDI-Environment