Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch September 2001
Gliederung 1. Einleitung 1.1 Definition 1.2 Einordnung Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Gliederung 1. Einleitung 1.1 Definition 1.2 Einordnung 1.2.1 Client/Server-Architektur 1.2.2 Middleware 2. EJB-Design 2.1 Aufbau 2.2 Anwendungsarchitekturen
Gliederung 3. Komponenten 3.1 Server 3.2 Container 3.3 Beans Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Gliederung 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
Gliederung 4. Interaktion der Komponenten im Beispiel Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Gliederung 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
Enterprise für unternehmenskritische Anwen- dungen entwickelt Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Definition EJB Einordnung • Client/Server-Architektur • Middleware Enterprise für unternehmenskritische Anwen- dungen entwickelt Java objekt-orientierte Programmier- sprache Beans wiederverwendbare Komponenten EJB Architektur für komponentenorien- tierte, verteilte Anwendungen
„EJB ist eine Architektur für verteilte, transaktionsorientierte Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Definition EJB Einordnung • Client/Server-Architektur • Middleware „EJB ist eine Architektur für verteilte, transaktionsorientierte Geschäftsanwendungen“ Enterprise JavaBeans sind keine JavaBeans
2-tier Modell 3/n-tier Modell Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Definition EJB Einordnung • Client/Server-Architektur • Middleware 2-tier Modell Applikation ist direkt mit Datenhaltung verbunden Businesslogik ist fest in Anwendung integriert Datenhaltung Business-Logik Anwendung 3/n-tier Modell Applikationserver entkoppelt Datenhaltung und Endanwendung Businesslogik fest in Anwendung integriert Applikation-Server Präsentation Datenhaltung Business-Logik DB
Einleitung EJB-Server EJB-Design Komponenten Zusammenspiel Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Definition EJB Einordnung • Client/Server-Architektur • Middleware DB EJB-Server Client DB EJB-Server Client DB andere Appl. Client DB DB
Physikalisches Netzwerk Transportorientierte Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Definition EJB Einordnung • Client/Server-Architektur • Middleware Physikalisches Netzwerk Anwendungs- interaktion Objekt- Transportorientierte Schichten MIDDLEWARE z.B. Java RMI, CORBA, COM+ CLIENT z.B. EJB‘s, CORBA Components SERVER
Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Aufbau Anwendungs- architekturen EJB Server CONTAINER DB Session Bean Home Interface & Home Object CLIENT Remote Interface & Remote Object JDBC DB DD Naming Interface Entity Bean
Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Aufbau Anwendungs- architekturen Client-Side Presentation Server-Side Presentation Server-Side Business-Logic Enterprise IS Browser Web- Server EJB- Container Pure HTML JSP Java Applet EJB EJB Desktop Java Applikation Java Servlet EJB Other devices J2EE Platform J2EE Platform J2EE Platform
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 im Beispiel Einsatzbereich Ausblick EJB - Server Kommunikation mit Client EJB – Container JNDI EJB – Container Kommunikation mit OS Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
Definiert durch EJB – Spezifikation Server 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 Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Server Container Beans Definiert durch EJB – Spezifikation Nicht spezifiziert Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
• stellt Laufzeitumgebung für EB`s dar Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Container • stellt Laufzeitumgebung für EB`s dar • macht eine EB über JNDI zugänglich • ist Vermittler zwischen Client und EB (Client greift nie direkt auf EB zu) • stellt Standardschnittstellen zur Verfügung (Home- u. Remote-Object) Stellt EB`s Java - API`s zur Verfügung Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
Load-balancing (Swapping von Session Beans) Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Container-Dienste Lifecycle-Management (Erzeugung, Initialisie- rung 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 Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
Containerservices Container Bean Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Containerservices Transaktionsmanagement Container Load - Balancing Persistenz-management Bean Lifecycle-management jar - File Deployment Sicherheits-management Pool-management Generierung der Bean-Klassen
Server-seitige Komponenten implementieren die Anwendungslogik Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Beans (EB) Server-seitige Komponenten implementieren die Anwendungslogik werden in einem Container deployed, der ihnen zur Laufzeit eine Umgebung zur Verfügung stellt, in der sie existieren können greifen auf die vom Container zur Verfügung ge- stellten Dienste zurück Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
Bestandteile Einleitung EJB-Design Komponenten Zusammenspiel Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Bestandteile Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Remote-Interface Home-Interface Bean-Klasse import java.rmi.RemoteExeption; import javax.ejb.*; public class XYBean implements EntityBean { …} Primarykey-Klasse XML Deployment Descriptor Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
stateless statefull Session Beans Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Session Beans implementieren die Anwendungslogik stehen einem Client exklusiv zur Verfügung nicht persistent Transaktionsmanagement bean-managed transactions container-managed transactions Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick stateless statefull Session Beans Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
nicht existent Lebenszyklus – stateless Session Beans pooled ready Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Lebenszyklus – stateless Session Beans Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick nicht existent System Exception ejbCreate() ejbRemove() pooled ready <method>(…) Client Container Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
Lebenszyklus – statefull Session Beans Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Lebenszyklus – statefull Session Beans Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick nicht existent Löschen nach Timeout passiviert System Exception ejbRemove() ejbActivate() ejbPassivate() ejbCreate() ready <method>(…) BEGIN COMMIT od. ROLLBACK ready in TA <method>(…) Client Container Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
repräsentieren Daten Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Entity Beans repräsentieren Daten zentrale Ressource, die von mehreren Clients zeitgleich in Anspruch genommen werden kann persistent bean-managed persistence container-managed persistence mittels Primärschlüssel eindeutig identifizierbar Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
Lebenszyklus – Entity Beans Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client Lebenszyklus – Entity Beans Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick nicht existent pooled ready sync ready async ready update Client Container Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
teilt dem Container mit, wie die EB zur Laufzeit zu behandeln ist Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Server JNDI Container Deployment Descriptor Client Beans • Session Beans • Entity Beans Datei (XML-Format) 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
Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten Server Container Beans • Session Beans • Entity Beans Deployment Descriptor JNDI Client <ejb-jar> <enterprise-beans> <session> <!-- Name der Bean im JNDI --> <ejb-name>Kurs</ejb-name> <!-- Klasse des HomeInterfaces --> <home>KursHome</home> <!-- Klasse des RemoteInterfaces --> <remote>Kurs</remote> <!-- 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> Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Server JNDI Container Deployment Descriptor Client Beans • Session Beans • Entity Beans Bean-Klasse Remote-Interface Home-Interface Deployment- PrimaryKey-Klasse Descriptor Container- Klasse Tools Interface XML-Dokument Home-Objekt Remote-Objekt Home-Interface Remote-Interface
• Applikation Programming Interface Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Server JNDI Container Deployment Descriptor Client Beans • Session Beans • Entity Beans 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
. . . Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Server JNDI Container Deployment Descriptor Client Beans • Session Beans • Entity Beans Application JNDI API Naming Manager JNDI SPI CORBA RMI . . . JNDI - Implementierungsmöglichkeiten
findet Beans durch JNDI Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Server JNDI Container Deployment Descriptor Client Beans • Session Beans • Entity Beans Client findet Beans durch JNDI kommuniziert mit Enterprise Beans über Interfaces Home und Remote muss nicht in Java geschrieben und kompiliert sein
Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Server JNDI Container Deployment Descriptor Client Beans • Session Beans • Entity Beans lookup(EJB-Name) JNDI Client Client Stub Home EJBHome create(), find(), remove() Home Object Anwendung Client Stub Remote alle Methoden der EJB Remote Object
Beispiel für das Zusammenspiel der Komponenten Client Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Beispiel für das Zusammenspiel der Komponenten Client ...verbindet sich mit Server ...erstellt Objekt ...ruft Funktion auf ...zerstört Objekt Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Ablauf EJB Server Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick CONTAINER DB Session Bean Home Interface & Home Object CLIENT Remote Interface & EJB Object JDBC DB DD Naming Interface Entity Bean Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
implementiert Home Interface KursHome Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Ablauf Bean KursBean eigentliche Bean implementiert Home Interface KursHome implementiert Remote Interface Kurs bei JNDI bekannt als Kurs Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
Home Interface KursHome Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Ablauf Home Interface KursHome Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick public interface KursHome extends EJBHome { . . . // Methode zum Erzeugen eines Kurses Kurs create() throws CreateException, RemoteException; } Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
Remote Interface Kurs Einleitung EJB-Design Komponenten Zusammenspiel Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Ablauf Remote Interface Kurs Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick // erbt von EJBObject public interface Kurs extends EJBObject { // Deklaration der Methoden public String getName() throws RemoteException; } Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
EB KursBean Einleitung EJB-Design Komponenten Zusammenspiel Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Ablauf EB KursBean Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick public class KursBean implements SessionBean { . . . // Implementieren aller SessionBeanInterface Methoden public void ejbActivate() {...} public void ejbPassivate() {...} public void ejbRemove() {...} public void ejbCreate() throws CreateException {...} // Methode die vom Client aufgerufen wird public String getName() { return "WWI00B"; } Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Ablauf public class Client { . . . // Verbinden mit JNDI Context ctx = getInitialContext(); // Bean im JNDI suchen Object home = ctx.lookup("Kurs"); // Verbindung zum HomeInterface herstellen KursHome home = (KursHome) narrow(home, KursHome.class); // ein neues Objekt erstellen Kurs einKurs = (Kurs) narrow(home.create(), Kurs.class); // Methode von Kurs aufrufen String message = einKurs.getName(); // Objekt entfernen einKurs.remove(); } Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten Übersicht ServerKomponenten Übersicht Code ClientKomponente Übersicht Code Ablauf JNDI Home Object Remote lookup(Kurs) Home Stub Home Stub Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Client Server Container HI create() Remote Stub KursBean Remote Stub RI getName() Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
Enterprise JavaBeans unterstützen Wiederverwendbarkeit Modularität Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Anwendungs- gebiete Vergleich mit alternativen Ansätzen • CORBA Vor- und Nachteile Enterprise JavaBeans unterstützen Wiederverwendbarkeit Modularität Thin Clients (Last-)Verteilung Transaktionsmanagment daher Einsatzbereiche insbesondere: als Middleware zur Anbindung von Internet-Anwendungen an bestehende Systeme für Intra- und Internetanwendungen
Java-Sicherheitsmodell Anwendungs- gebiete Vergleich mit alternativen Ansätzen • CORBA Vor- und Nachteile Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick EJB CORBA Sprachunter-stützung Java bzw. via CORBA sprachunabhängig Plattform-unterstützung alle Plattformen mit Java-VM plattformunabhängig Kommunikation synchron Sicherheit Java-Sicherheitsmodell sehr umfangreich Eignung für komplexe Systeme uneingeschränkt Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
Welchen Nutzen bietet der Einsatz von EJB? Unternehmen Fazit Welchen Nutzen bietet der Einsatz von EJB? Unternehmen Stabilität Verknüpfung inhomogener Systeme (Plattformunabhängigkeit) kostengünstigere Applikationen Lastverteilung, Pooling (Performanz) Entwickler Verkürzung von Entwicklungszeiten einfachere Programmierung Anwender (Client-Entwickler) Transparenz Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch
S. Denniger/I. Peters, Enterprise JavaBeans, 2000, München Literaturverzeichnis C. Crenshaw, The Developer`s Guide to Understanding 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 Specifi- cation, 1999, Palo Alto Einleitung EJB-Design Komponenten Zusammenspiel der Komponenten im Beispiel Einsatzbereich Ausblick Stephan Bury Pascal Busch Bita Gerami Michael Kropiwoda Oliver Losch