Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten am Beispiel Einsatzbereich Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Ausblick September 2001 Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Gliederung Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten am Beispiel 1. Einleitung 1.1 Definition 1.2 Einordnung 1.2.1 Client/Server-Architektur 1.2.2 Middleware Einsatzbereich Ausblick 2. EJB-Design 2.1 Aufbau 2.2 Anwendungsarchitekturen Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Gliederung Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten am Beispiel Einsatzbereich Ausblick 3. Komponenten 3.1 Server 3.2 Container 3.3 Beans 3.3.1 Session Beans 3.3.2 Entity Beans 3.4 Deployment Descriptor 3.5 JNDI 3.6 Client Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Gliederung Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten am Beispiel Einsatzbereich Ausblick 4. Interaktion der Komponenten im Beispiel 5. Einsatzbereich 5.1 Anwendungsgebiete 5.2 Vergleich mit alternativen Ansätzen 5.3 Vor- und Nachteile 6. Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Definition EJB Einleitung Enterprise für unternehmenskritische Anwendungen entwickelt Java objekt-orientierte Programmiersprache Beans wiederverwendbare Komponenten EJB Architektur für komponentenorientierte, verteilte Anwendungen EJB-Design Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einordnung • Client/Server-Architektur • Middleware Einsatzbereich Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Definition EJB Einordnung • Client/Server-Architektur • Middleware Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich Ausblick „EJB ist eine Architektur für verteilte, transaktionsorientierte Geschäftsanwendungen“ Enterprise JavaBeans sind keine JavaBeans Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Definition EJB Einordnung • Client/Server-Architektur • Middleware 2-tier Modell Einleitung Applikation ist direkt mit Datenhaltung verbunden Businesslogik ist fest in Anwendung integriert EJB-Design Komponenten Anwendung Business-Logik Datenhaltung Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich 3/n-tier Modell Applikationserver entkoppelt Datenhaltung und Endanwendung Businesslogik fest in Anwendung integriert Ausblick Applikation-Server Präsentation Business-Logik Datenhaltung Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Definition EJB Einordnung • Client/Server-Architektur • Middleware Einleitung Client EJB-Server DB EJB-Design Komponenten DB Zusammenspiel der Komponenten amBeispiel im Beispiel Client EJB-Server Einsatzbereich DB Ausblick Client andere Appl. DB Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Definition EJB Einleitung Einordnung • Client/Server-Architektur • Middleware Anwendungsinteraktion CLIENT SERVER EJB-Design Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich MIDDLEWARE Objektinteraktion MIDDLEWARE z.B. Java RMI, CORBA, COM+ z.B. EJB‘s, CORBA Components Transportorientierte Schichten Transportorientierte Schichten Ausblick Physikalisches Netzwerk Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Aufbau Anwendungsarchitekturen EJB Server Einleitung CONTAINER EJB-Design Home Interface & Home Object Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich CLIENT Session Bean Remote Interface & Remote Object DB JDBC DD Naming Interface DB Ausblick Entity Bean Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Aufbau Anwendungsarchitekturen Client-Side Presentation Einleitung EJB-Design Komponenten Browser Pure HTML Java Applet Server-Side Presentation WebServer JSP Server-Side Business-Logic Enterprise IS EJBContainer EJB Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich EJB Desktop Java Applikation Java Servlet EJB Ausblick Other devices J2EE Platform J2EE Platform J2EE Platform Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Server stellt Basisdienste (z.B. Laufzeitumgebung, Netzwerkprotokoll) für Container bereit Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich Ausblick Kommunikation mit Client JNDI Kommunikation mit OS EJB – Container EJB - Server EJB – Container Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client • Serverhersteller gehen zum J2EE-konformen Server über • Schnittstelle zwischen Server und Container nicht spezifiziert • Server und Container meist vom selben Hersteller Server Container Beans Ausblick Nicht spezifiziert Definiert durch EJB – Spezifikation Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Container Einleitung • stellt Laufzeitumgebung für EB`s dar EJB-Design • macht eine EB über JNDI zugänglich Komponenten • ist Vermittler zwischen Client und EB (Client greift nie direkt auf EB zu) Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich Ausblick • stellt Standardschnittstellen zur Verfügung (Home- u. Remote-Object) Stellt EB`s Java - API`s zur Verfügung Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Container-Dienste Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich Ausblick Lifecycle-Management (Erzeugung, Initialisierung und Löschen von EB) Load-balancing (Swapping von Session Beans) Persistenz-Management (für Entity Beans) Transaktions-Management (Gewährleistung des erforderlichen Kontextes für Methoden) Generierung von Stubs und Skeletons für RMI Sicherheits-Management Poolmanagement für Beans Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans Einleitung EJB-Design JNDI Client Transaktions management Containerservices Deployment Descriptor Komponenten Zusammenspiel der Komponenten am Beispiel Einsatzbereich jar - File Deployment Bean Lifecyclemanagement Container Ausblick Generierung der BeanKlassen Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Beans (EB) Einleitung Server-seitige Komponenten EJB-Design implementieren die Anwendungslogik Komponenten werden in einem Container deployed, der ihnen zur Laufzeit eine Umgebung zur Verfügung stellt, in der sie existieren können Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich greifen auf die vom Container zur Verfügung gestellten Dienste zurück Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Bestandteile Einleitung EJB-Design Home-Interface Remote-Interface Komponenten Bean-Klasse Zusammenspiel import java.rmi.RemoteExeption; der Komponenten amBeispiel im Beispiel import javax.ejb.*; public class XYBean implements EntityBean { …} Einsatzbereich Primarykey-Klasse Ausblick XML Deployment Descriptor Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Session Beans Einleitung implementieren die Anwendungslogik EJB-Design stehen einem Client exklusiv zur Verfügung Komponenten nicht persistent Zusammenspiel Transaktionsmanagement bean-managed transactions container-managed transactions der Komponenten amBeispiel im Beispiel Einsatzbereich Ausblick Session Beans stateless statefull Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Lebenszyklus – stateless Session Beans Einleitung EJB-Design nicht existent Komponenten Zusammenspiel ejbCreate() der Komponenten amBeispiel im Beispiel ejbRemove() Einsatzbereich Ausblick System Exception pooled ready <method>(…) Client Container Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Lebenszyklus – statefull Session Beans Einleitung EJB-Design nicht existent Komponenten Löschen nach Timeout ejbRemove() ejbActivate() Zusammenspiel der Komponenten amBeispiel im Beispiel ejbCreate() System Exception ready Einsatzbereich BEGIN Ausblick ejbPassivate() <method>(…) COMMIT od. ROLLBACK ready in TA Client Container passiviert <method>(…) Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Entity Beans Einleitung repräsentieren Daten EJB-Design zentrale Ressource, die von mehreren Clients zeitgleich in Anspruch genommen werden kann Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich persistent bean-managed persistence container-managed persistence mittels Primärschlüssel eindeutig identifizierbar Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Lebenszyklus – Entity Beans Einleitung EJB-Design nicht existent pooled ready sync ready async Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich Ausblick ready update Client Container Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Datei (XML-Format) Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich teilt dem Container mit, wie die EB zur Laufzeit zu behandeln ist enthält deskriptive Informationen über die Struktur und Abhängigkeiten einer EB das Verhalten der EB zur Laufzeit die Kombinationsmöglichkeiten mit anderen EBs einer jar-Datei zu komplexen Bausteinen Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Einleitung Container Beans • Session Beans • Entity Beans <!-- Klasse des HomeInterfaces --> <home>KursHome</home> Komponenten <!-- Klasse des RemoteInterfaces --> <remote>Kurs</remote> der Komponenten amBeispiel im Beispiel Einsatzbereich Ausblick JNDI Client <ejb-jar> <enterprise-beans> <session> <!-- Name der Bean im JNDI --> <ejb-name>Kurs</ejb-name> EJB-Design Zusammenspiel Deployment Descriptor <!-- Klasse der EnterpriseBean --> <ejb-class>KursBean</ejb-class> <!-- Sessiontyp: Stateless --> <session-type>Stateless</session-type> <!-- Transaktionstyp: Containermanaged --> <transaction-type>Container</transaction-type> </session> </enterprise-beans> <assembly-descriptor> <!-- mit dem assembly-descriptor kann man z.B. Rollen verteilen --> </assembly-descriptor> </ejb-jar> Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Bean-Klasse Remote-Interface Home-Interface Einleitung EJB-Design DeploymentDescriptor PrimaryKey-Klasse Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich Klasse ContainerTools Interface XML-Dokument Ausblick Home-Objekt Home-Interface Remote-Objekt Remote-Interface Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich Ausblick Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client JNDI API • Applikation Programming Interface • Wichtigstes Element: Context interface • Lookup(Name) liefert Objekt dieses Namens Naming Manager • Funktionalität wird vor dem Entwickler verborgen JNDI SPI • Service Provider Interface • ermöglicht Nutzung unterschiedlicher Middleware Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Einleitung Application EJB-Design Komponenten JNDI API Zusammenspiel der Komponenten amBeispiel im Beispiel Naming Manager Einsatzbereich JNDI SPI Ausblick CORBA RMI . . . JNDI Implementierungsmöglichkeiten Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Einleitung Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Client EJB-Design Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich findet Beans durch JNDI kommuniziert mit Enterprise Beans über Interfaces Home und Remote muss nicht in Java geschrieben und kompiliert sein Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Server Container Beans • Session Beans • Entity Beans EJBHome Einleitung Client JNDI Client Stub Home create(), find(), remove() Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel JNDI lookup(EJB-Name) Client EJB-Design Deployment Descriptor Home Object Anwendung Einsatzbereich Ausblick Client Stub Remote alle Methoden der EJB Remote Object Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Übersicht Einleitung ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Beispiel für das Zusammenspiel der Komponenten EJB-Design Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich Client ...verbindet sich mit Server ...erstellt Objekt ...ruft Funktion auf ...zerstört Objekt Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Ablauf EJB Server Einleitung CONTAINER EJB-Design Home Interface & Home Object Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich CLIENT Session Bean Remote Interface & EJB Object DB JDBC DD DB Naming Interface Ausblick Entity Bean Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Ablauf Bean KursBean Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich eigentliche Bean implementiert Home Interface KursHome implementiert Remote Interface Kurs bei JNDI bekannt als Kurs Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Ablauf Home Interface KursHome Einleitung EJB-Design public interface KursHome extends EJBHome { ... Komponenten // Methode zum Erzeugen eines Kurses Kurs create() throws CreateException, RemoteException; Zusammenspiel der Komponenten amBeispiel im Beispiel ... } Einsatzbereich Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Ablauf Remote Interface Kurs Einleitung EJB-Design // erbt von EJBObject Komponenten public interface Kurs extends EJBObject { Zusammenspiel // Deklaration der Methoden der Komponenten amBeispiel im Beispiel public String getName() throws RemoteException; } Einsatzbereich Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Ablauf EB KursBean Einleitung public class KursBean implements SessionBean { ... EJB-Design // Implementieren aller SessionBeanInterface Methoden Komponenten public void ejbActivate() {...} public void ejbPassivate() {...} Zusammenspiel public void ejbRemove() {...} der Komponenten amBeispiel im Beispiel public void ejbCreate() throws CreateException {...} ... // Methode die vom Client aufgerufen wird Einsatzbereich public String getName() { return "WWI00B"; Ausblick } } Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Ablauf public class Client { ... Einleitung // Verbinden mit JNDI Context ctx = getInitialContext(); EJB-Design // Bean im JNDI suchen Object home = ctx.lookup("Kurs"); Komponenten ... // Verbindung zum HomeInterface herstellen Zusammenspiel KursHome home = (KursHome) narrow(home, KursHome.class); der Komponenten amBeispiel im Beispiel ... // ein neues Objekt erstellen Einsatzbereich Kurs einKurs = (Kurs) narrow(home.create(), Kurs.class); // Methode von Kurs aufrufen Ausblick String message = einKurs.getName(); // Objekt entfernen einKurs.remove(); ... } Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Ablauf JNDI Einleitung lookup(Kurs) Client EJB-Design Home Stub Komponenten Zusammenspiel Server HI Home Stub Container create() Remote Stub Home Object der Komponenten amBeispiel im Beispiel KursBean Einsatzbereich Ausblick Remote Stub RI getName() Remote Object Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Anwendungsgebiete Einleitung EJB-Design Komponenten Vergleich mit alternativen Ansätzen • CORBA Vor- und Nachteile Enterprise JavaBeans unterstützen Wiederverwendbarkeit Modularität Thin Clients (Last-)Verteilung Transaktionsmanagment Zusammenspiel der Komponenten amBeispiel im Beispiel Einsatzbereich Ausblick daher Einsatzbereiche insbesondere: als Middleware zur Anbindung von Internet-Anwendungen an bestehende Systeme für Intra- und Internetanwendungen Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Anwendungsgebiete Vergleich mit alternativen Ansätzen • CORBA Vor- und Nachteile EJB CORBA Sprachunterstützung Java bzw. via CORBA sprachunabhängig Komponenten Plattformunterstützung alle Plattformen mit Java-VM plattformunabhängig Zusammenspiel Kommunikation synchron synchron der Komponenten amBeispiel im Beispiel Sicherheit Java-Sicherheitsmodell sehr umfangreich uneingeschränkt uneingeschränkt Einleitung EJB-Design Einsatzbereich Ausblick Eignung für komplexe Systeme Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Fazit Welchen Nutzen bietet der Einsatz von EJB? Einleitung EJB-Design Unternehmen Stabilität Komponenten Verknüpfung inhomogener Systeme (Plattformunabhängigkeit) Zusammenspiel kostengünstigere Applikationen der Komponenten amBeispiel im Beispiel Lastverteilung, Pooling (Performanz) Einsatzbereich Ausblick Entwickler Verkürzung von Entwicklungszeiten einfachere Programmierung Anwender (Client-Entwickler) Transparenz Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Literaturverzeichnis C. Crenshaw, The Developer`s Guide to Understanding Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten amBeispiel im Beispiel EJB Applications, 2000, New Jersey S. Denniger/I. Peters, Enterprise JavaBeans, 2000, München A. Thomas, Enterprise JavaBeans Technology, 1998, Boston V. Matena/M. Hapner, Enterprise JavaBeans Specification, 1999, Palo Alto Einsatzbereich Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch