Einleitung Dateien 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. Einleitung Mehrschichtenmodell (Multi Tier) Dateien Client Tier Browser Web Tier JSP Program Enterprise Java Beans Tier Enterprise Information Systems Tier EJB Data Source Bestandteile einer J2EE Applikation (1) Einleitung (Quelle: Alexander Dunn, Java 2EEE, dtv, 2001) Dateien Hersteller HerstellerPK META-INF hersteller-webapp HerstellerHome HerstellerBean ejb-jar.xml META-INF Hersteller.jar application .xml orion/applications/Hersteller WEB-INF Test.jsp web.xml Bestandteile einer J2EE Applikation (2) (Quelle: Alexander Dunn, Java 2EEE, dtv, 2001) Einleitung Server-spezifische Konfigurationsdateien Dateien orion/config default-web-site.xml z.B.: • Einstellen des Ports • Adresse des jar-Files wenn es von eine jspSeite aufgerufen wird data-sources.xml z.B.: Auswahl der Datenbank server.xml z.B.: Adresse des jar-Files Einleitung Dateien 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) Einleitung Dateien 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 Einleitung Dateien 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 Einleitung Dateien 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 Einleitung Dateien ejb-jar.xml (Deployment Descriptor) • • <ejb-jar> <enterprise-beans> • • • • • • • • • <description> <ejb-name> <home> <remote> <ejb-class> <persistence-type> <prim-key-class> <reentrant> <cmp-field> • <field-name> <resource-ref> • <res-ref-name> • <res-type> • <res-auth> • Wurzelelement 3 Subelemente: <enitity><session> <message-driven> Beanbeschreibung Name des Beans Name des Home Interface (mit Pfadangabe) Name des Remote Interface (mit Pfadangabe) Name der Entity EJB Klasse (mit Pfadangabe) Persistenztyp (Container- oder Bean-verwaltet) Primärschlüsselklasse (bei Entity Beans) Rekursive Aufrufe zulässig? Felder die vom Container verwaltet werden Feldname Regelt den Datenbankzugriff Name der Verbindung Art der Verbindung Legt fest wer die Authentifizierung durchführt Einleitung Dateien 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 Einleitung Dateien application.xml Application Deployment Descriptor. Gibt dem Server Informationen über das JAR-File. • <application> Wurzelelement • <display-name> Gibt den Applikationsnamen an • <module> ejb, java oder web-Element • <ejb> URI des ejb.jar • <web> WEB-URI URI eines Web Application Files • <web-uri> • <context-root> Context Root der Applikation Einleitung Dateien server.xml Konfiguration für den Application Server • <application-server> Wurzelelement application-directory Verzeichnis für Applikationen deployment-directory Deployment Informatioen • <application> name Bezeichner der Applikation path Pfadangabe auto-start Automatischer Start Einleitung Dateien 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 jndiNamen 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-InterfaceObject in JNDI eingetragen und somit für den Client verfügbar Der Container bietet eine JNDI-Environment