1 J2EE ■ Java 2 Enterprise Edition ◆ Erweiterungen zum Standard Java (J2SE, Java 2 Standard Edition) ◆ EJB 2.0 (Enterprise Java Beans) ◆ JDBC 2.0 (Java Database Connectivity) ◆ Java Servlet Technology 2.3
D Enterprise Java Beans
◆ JSP 1.2 (Java Server Pages) ◆ JMS 1.0 (Java Message Service) ◆ JNDI 1.2 (Java Naming and Directory Interface) ◆ JTA 1.0 (Java Transaction API) ◆ JavaMail API 1.2 ◆ JAXP 1.1 (Java API for XML Processing) ◆ JCA (Java Connector Architecture) ◆ JAAS 1.0 (Java Authentication and Authorization Service)
D.1 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
2 Motivation
3 Dynamische Web-Inhalte 3.1 CGI-Skripten
■ Webbasierte Dienste ◆ Zugriff auf Dienstleistungen mittels Web-Browser ◆ klassisches Client-Server-Prinzip ◆ Beispiele: • von Kalender und Web-Cam bis zum Online-Shop
▲ Problem
D.2 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
■ Common Gateway Interface ◆ Standard zum dynamischen Erzeugen von Web-Inhalten
Browser HTTP
■ Vorgehensweise
Web-Server
Browser
◆ Registrierung eines CGI-Skripts unter bestimmten URIs
◆ statische Web-Seiten wie im klassischen Web-Server nicht ausreichend
◆ bei Anfrage nach URI wird Skript gestartet
◆ Zustandspeicherung für Benutzerinteraktion notwendig
HTTP Web-Server
CGI
CGI Skript
• statt statische Web-Seite ausgeliefert
✱ Folgerung
◆ Skript gibt geforderten Web-Inhalt zurück
◆ dynamische Generierung von Antwortseiten aufgrund von Benutzereingaben
• Inhalt kann dynamisch erzeugt bzw. manipuliert werden
◆ Zugang zu Datenspeichern
D.3 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
D.4 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
3.1 CGI-Skripten (2)
3.2 Servlets
■ Schnittstelle
■ “The Java Way of CGI”
◆ CGI-Skript ist ein neuer Prozess im Betriebssystem
◆ Implementierung der CGI-Funktionalität in Java ◆ Servlet kann HTTP-Anfragen bearbeiten und Antwort generieren
• ineffiziente Bearbeitung von Anfragen ◆ Eingabe über Umgebungsvariablen und Eingabestrom
• standardisierte Schnittstelle für Servlet-Objekte ◆ Servlet-Container
• Umgebungsvariablen: Anfrage URI, Header-Informationen etc. • Eingabestrom: im Body übermittelte Daten, z.B. bei HTTP POST Methode
• Behälter für mehrere Servlets
◆ Ausgabe über Ausgabestrom
• ruft richtiges Servlet entsprechend Konfiguration auf
• Ausgabe eines Teils der HTTP-Header, z.B. Content-Type
■ Typische Software-Konfiguration
• Ausgabe des HTTP-Body für den HTTP-Response
◆ Container als eigenständiger Prozess
■ Fähigkeiten ◆ beliebige Inhaltserzeugung
◆ Web-Server leitet Anfragen weiter
◆ Zustandsspeicherung über Dateisystem oder Datenbank im Hintergrund
◆ zur Effizienzsteigerung Kombination von Web-Server und Container möglich
Browser HTTP HTTP Container Web-Server Servlet Servlet Servlet
D.5 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
3.2 Servlets (2)
D.6 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
3.3 Java-Server-Pages
■ Servlet-Objekte
■ Nachteil von Servlets
◆ implementieren bestimmte Schnittstelle
◆ Programmieraufwand für fast vollständig statische Web-Inhalte
• insbesondere Methode:
• z.B. lediglich Page-Counter hinzuzufügen • z.B. lediglich wenige benutzerspezifischen Teile anzupassen
void doGet( HTTPServletRequest req, HTTPServletResponse resp );
■ Konzept der Java-Server-Pages (JSP)
◆ HTTPServletRequest enthält alle nötigen Eingabeinformationen
◆ Entwicklung eines XHTML- oder XML-Dokuments
◆ HTTPServletResponse kann dynamisch erstellten Web-Inhalt aufnehmen
• wird als Ergebnis einer Anfrage zurückgegeben
• Java-Ausgabestrom zum Aufnehmen des Body-Bereichs der HTTP-Response • Einsatz von üblichen „print“-Anweisungen zum Erzeugen der Ausgabe
◆ dynamische Anteile durch spezielle Auszeichnungen • XML-Elemente in speziellem Namensraum
■ Konfiguration des Containers
• über XML hinausgehende Auszeichnungen • spezielle Instruktionen – zum Zugriff auf Java-Variablen – zum Aufruf von Java-Objekten, – für Bedingungen und Schleifen
◆ „Deployment“ (wörtlich Einsatz, Stationierung) ◆ Bereitstellung der Dienste • Konfiguration der Servlet-Klassen für verschiedene URIs
D.7 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
D.8 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
3.3 Java-Server-Pages (2)
3.3 Java-Server-Pages (3)
✱ JSP-Seite ist umgestülptes Servlet (und umgekehrt)
■ Programmierung im JSP-Dokument ◆ vorgegebene Anweisungen und XML-Elemente
■ Interne Implementierung
◆ weitere Anweisungen integrierbar durch Tag-Libraries
◆ Erzeugung eines Servlets aus XML-Dokument im JSP-Container
■ Tag-Library
• in der Regel erst bei Anfrage ... Servlet Code XML-Dokument
◆ Java-Klassenbibliothek mit speziellen Schnittstellen
... doGet(...) { ... out.print “\n”; out.print “...”; Servlet Code
◆ Deployment im Container und im JSP-Dokument ◆ neuer XML-Namensraum für Anweisungen einer Tag-Lib ◆ Anwendungsbereiche
out.print “\n”; ... }
• Datenbankanbindung • Stringmanipulationen • Zugang zu Verzeichnisdiensten
Servlet-Klasse
• etc.
D.9 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
3.4 Bestandsaufnahme
D.10 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
4 Motivation für EJB
▲ Nachteile von CGI, Servlets und JSP
■ Große verteilte Anwendungen im „Geschäftsleben“
◆ Zugang zu Zustandsinformationen mühsam
◆ viele Clients
◆ Koordinierung nebenläufiger Anfragen problematisch
• wollen Dienste nutzen ◆ einige Server
• Stichwort: Transaktionen ◆ unter Umständen Vermischung von Darstellung und Anwendungslogik
Client Client Client
Client Client Client
Server
Server Server
• stellen Dienste bereit
◆ Sicherheitsanforderungen müssen immer wieder integriert werden
◆ einige Datenbanken • halten die Geschäftsdaten
■ Problem
Datenbank
◆ Aufbau des Systems ◆ Zergliederung in Einzelteile ◆ Kommunikation der Teile
✱ Middleware
D.11 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
D.12 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
4 Motivation für EJB (2)
4 Motivation (3)
✱ Komponenten-Idee
■ Komponentenmodell
◆ Zerlegung der Geschäftslogik („Business-Logik“) in Komponenten
◆ Spezifikation zur Konstruktion und Interaktion von Komponenten ◆ Spezifikation der Umgebung und deren Schnittstellen
• z.B. Komponente zur Preisberechnung ◆ Wiederverwendung von Komponenten
◆ Komponenten-Idee benötigt standardisierte Plattform
• Komponentenmarkt mit Komponentenanbietern • Zusammenschalten von neuen und eingekauften Komponenten zu einer neuen Anwendung
■ EJB-Komponentenmodell als ein Standard
◆ Bereitstellung einer Umgebung für Komponenten
◆ Programmiersprache Java
• Umgebung unterstützt Sicherheit
• Programmiersicherheit (keine Zeiger, Byte-Code-Verifier)
• Umgebung unterstützt Anwendungskonsistenz durch Transaktionen
• dynamisches Klassenladen
■ Application Server
• Reflection-API (Introspektion von unbekannten Objekten) • Unabhängigkeit von Hardware- und Systemplattform (Portabilität)
◆ Umgebung für Komponenten
◆ Komponente: Enterprise Java Bean
• Menge von Komponenten bilden eine Anwendung
D.13 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
D.14 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
4 Motivation (4)
5 Architektur
■ Enterprise Java Bean ist nicht gleich Java Bean
■ Typisch: Architektur aus mehreren Schichten (Multitiered Architecture)
◆ Java Bean ist lokales Objekt mit bestimmten Eigenschaften
◆ Client-Tier
• lokale Komponente
• Anwendungsteil des Client
• set*, get* Methoden
• Webbrowser
• mit Reflection-API dynamisch komponierbar
• dedizierte Anwendung
◆ EJB ist Komponente im Verteilten System
Client
◆ Middle-Tier
• spezielle Schnittstellen zur Interaktion
• Geschäftslogik
• Einbindung in Transaktions- und Sicherheitsdienste
• Service-Bereitstellung
Server
◆ EIS-Tier (Enterprise Information System)
■ Andere Komponentenmodelle
• Datenbank
◆ Microsofts .NET Managed Objects
• Archiv der Geschäftsvorgänge
◆ CORBA Component Model (CCM) ◆ einige weitere Forschungssysteme
D.15 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
D.16 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
5 Architektur (2)
5 Architektur (3)
■ Client-Tier
■ Middle-Tier
◆ Webbrowser als Client-Anwendung
◆ Web-Tier
• Zugriff auf dynamische Webseiten (z.B. GMX, Webshop, Hotelreservierung)
• Web-Container für Java Server Pages oder Servlets • (CGI-Skript)
• Webseiten mit Applets (Applet-Programm tritt als Client zur Anwendung auf, z.B. Homebanking) ◆ dedizierte Client-Anwendung
• unnötig bei dedizierter Client-Anwendung ◆ Business-Tier • enthält eigentliche Geschäftslogik
• kommuniziert mit dem Rest der Anwendung
• Einsatz von Geschäfts-Komponenten
◆ Web-Services-Schnittstelle
• Komponenten-Container
◆ Benutzeroberfläche zur Anwendung
◆ Verarbeitung von Geschäftsprozessen und Geschäftsdaten
◆ lokale Berechnung/Verarbeitung
D.17 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
5 Architektur (4)
D.18 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
5.1 EJB-Architektur
■ EIS-Tier
■ Globales Bild einer EJB-Anwendung
◆ Datenbanksysteme
Client
• relationale Datenbanken
Client
SOAP
• objektorientierte Datenbanken
Client Tier
Client HTTP
IIOP
Firewall
◆ Altanwendungen zum Zugriff auf Geschäftsdaten
Servlets
Middle Tier
JSP
◆ Datenverwaltung von Geschäftsdaten EJB-Container
• Konsistenz der Daten
JDBC JMS
SQL
EJ Beans
J2EE-Server
Connector propr. Protokoll
IIOP, SOAP
EIS Tier
andere Systeme
D.19 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
D.20 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
5.1 EJB-Architektur (2)
5.2 Rollen von EJB
■ Beispielanwendungen
■ Bean-Entwickler
◆ Bankanwendung
◆ Komponentenverkäufer im Komponentenmarkt
• Client am Webbrowser
◆ Entwicklungsabteilung
• Application-Server erlaubt Ansicht des Kontoauszug, Beauftragung für Überweisung, Dauerauftrag etc.
◆ ... liefern Enterprise-Java-Bean • d.h. Java Klassen gemäß EJB-Spezifikation für Komponenten
• Datenbanken im Hintergrund halten Buchungen und Kontostände sowie Benutzerdaten
■ Anwendungsentwickler ◆ Entscheidung über Koponenteneinsatz (Zukauf, Eigenentwicklung)
◆ Webshop • Client am Webbrowser
◆ Verbindungscode zwischen Komponenten
• mehrere Application-Server für Kreditkartenzahlung, Produktkatalog, Kundenprofilverwaltung
◆ Entwicklung der Benutzerschnittstelle (JSP, Servlet, Applet)
■ Abwicklung von Geschäftsprozessen ◆ Zerlegung für mehrere hierarchisch aufgerufene Beans
D.21 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
5.2 Rollen von EJB (2)
D.22 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
5.2 Rollen von EJB (3)
■ Anwendungsinstallateur (Deployer)
■ Application-Server-Anbieter
◆ Aufstellen der Hardware für Application-Server
◆ Bereitstellen des Bean-Containers
• Stichworte: Redundanz und Fehlertoleranz
• Behausung für Enterprise Java Beans
◆ Verteilung der Beans auf Application-Server
• Unterstützung für Sicherheit, Transaktionen etc.
◆ Sicherung der Kommunikation durch Firewalls
◆ Beispiele
◆ Integration in Infrastruktur • Stichwort: Verknüpfung von Zugrifssrechten mit aktuellen Benutzern ◆ Performance-Tuning
■ Systemadministratoren ◆ Betrieb der Anwendung
• WebLogic (BEA)
Bluestone (HP)
• iPlanet
iPortal (IONA)
• Websphere (IBM)
Borland Application Server
• Oracle 9i
JBoss (Open Source)
• JRun (Macromedia)
Powertier (Persistence)
• Gemstone/J (Brokat)
• Managementfunktion ◆ Überwachung der Anwendung • Monitoring, Fehlerbehebung
D.23 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
D.24 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
5.2 Rollen von EJB (4)
5.3 Unterschied zu klassischer Middleware
■ Werkzeuganbieter
■ Klassische Middleware ist explizit
◆ Werkzeuge für die Code-Entwicklung
◆ Middleware: CORBA, Java RMI ◆ Beispiel: Überweisungsvorgang von Konto zu Konto
• IDE, Integrated Development Environment • z.B. Visual Age (IBM)
account1.transfer( Amount s, Account other );
◆ Werkzeuge zur Modellierung und Code-Erzeugung
◆ notwendiger Code im Kontoobjekt
• UML, Unified Modelling Language
• Aufruf eines Sicherheitsservice, ob Aufrufer berechtigt
• z.B. Rational Rose, Together/J
• Aufruf eines Transaktionsservice zum Start einer Transaktion • Aufruf eines Datenbankservers zum Laden von Kontoinformationen • lokale Kontostandsberichtigung • Aufruf des zweiten Kontos zur Kontostandsberichtigung • Aufruf des Datenbankservers zum Speichern der Kontoinformationen • Aufruf des Transaktionsservice zum Beenden der Transaktion
D.25 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
5.3 Unterschied zu klassischer Middleware (2)
D.26 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
5.3 Unterschied zu klassischer Middleware (3)
▲ Problem
■ Implizite Middleware wie bei EJB
◆ komplexe Programmierung
◆ Beispiel: Überweisungsvorgang von Konto zu Konto
◆ schwierige Wartung
account1.transfer( Amount s, Account other );
◆ Interaktion verschiedener Produkte unter Umständen problematisch
◆ notwendiger Code in Bean
• z.B. Datenbankserver und Transaktionsdienst
• lokale Kontostandsberichtigung
✱ Vorteil
• Aufruf einer zweiten Bean zur Kontostandsberichtigung des anderen Kontos
◆ hohe Flexibilität
◆ Interaktion mit Services erfolgt implizit • Container fängt Interaktionen ab ◆ Beschreibung der Interaktion in der Deployment-Phase • Deployment-Deskriptor (XML)
D.27 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
D.28 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
5.3 Unterschied zu klassischer Middleware (4)
5.3 Unterschied zu klassischer Middleware (5)
✱ Vorteil
■ EJB bietete implizite Unterstützung für
◆ einfach zu entwickelnden Beans
◆ verteilte Transaktionen
◆ leichte Wartung da übersichtlicher Code
• Abbruch oder Bestätigung der Ergebnisse einer Transaktion
◆ gesichertes Zusammenspiel der Komponenten
• Koordinierung nebenläufiger Aktionen ◆ Sicherheitsdienst
▲ Nachteil
• Zugriffskontrolle
◆ weniger flexibel
◆ Ressourcen- und Life-Cycle-Kontrolle
◆ im Fehlerfall weniger durchschaubar
• Container verwaltet teilweise Bean-Lebenszyklus
• abhängig vom Reifegrad der Produkte
◆ Persistenz • automatisches Sichern persistenter Daten z.B. in Datenbanken ◆ Monitoring • Container kann Last und Aufrufhäufigkeiten erfassen
D.29 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
5.3 Unterschied zu klassischer Middleware (6)
D.30 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
6 EJB-Grundlagen
■ Implizite EJB Unterstütztung (fortges.)
■ Verschiedene Bean-Typen
◆ entfernte Aufrufe
◆ Session-Bean
◆ Ortstransparenz
• Modellierung von Geschäftsprozessen
• wie klassische Middleware
• agieren wie Verben (repräsentieren mögliche Aktionen) • z.B. „überweisen“, „autorisieren“ • interagieren typischerweise mit Entity-Beans und Session-Beans ◆ Entity-Bean • Modellierung von Geschäftsdaten • agieren wie Substantive (repräsentieren Daten aus der Datenbank) • z.B. „Konto“, „Kreditkarte“, „Produkt“ ◆ Message-Driven-Bean • ähnlich Session-Bean • ansprechbar über Nachrichten
D.31 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
D.32 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
6.1 Bean-Klassen
6.2 Interaktion mit Beans
■ Beans werden durch Java-Klassen repräsentiert
■ Keine direkte Interaktion
◆ müssen bestimmte Java-Interface implementieren
◆ Bean-Instanzen sind nicht direkt ansprechbar • implizite Middleware-Aktionen erfordern ein unbedingtes Abfangen von Aufrufen
■ Alle Beans ◆ implementieren Marker-Interface: javax.ejb.EnterpriseBean
■ Repräsentant für eine Bean-Instanz ist das EJBObject
◆ markiert Bean gleichzeitig als serializable
◆ implementiert ein (entferntes) Bean-Interface
■ Einzelne Bean-Typen
• Bean-Interface muss von javax.ejb.EJBObject erben
◆ implementieren jeweils Typ-Interfaces: javax.ejb.SessionBean, javax.ejb.EntityBean, java.ejb.MessageDrivenBean
• dieses implementiert java.rmi.Remote • deklariert alle Methoden der Geschäftslogik ◆ Implementierung des EJBObject herstellerspezifisch ◆ Clienten rufen Bean über ein EJBObject auf • entfernte Aufrufe über RMI bzw. RMI-IIOP möglich
D.33 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
6.2 Interaktion mit Beans (2)
D.34 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
6.2 Interaktion mit Beans (3)
■ EJBObject fängt Aufrufe an der Bean ab
■ Lokaler Repräsentant für eine Bean-Instanz ist das EJBLocalObject ◆ implementiert ein lokales Bean-Interface
Client
EJBObject RMIReferenz
• Bean-Interface muss von javax.ejb.EJBLocalObject erben
Bean-Instanz
• deklariert alle Methoden der Geschäftslogik EJB-Container
◆ Implementierung des EJBLocalObject herstellerspezifisch ◆ Clienten rufen Bean über ein EJBLocalObject auf
◆ führt implizite Middleware-Interkationen durch
• kein entfernter Aufruf möglich
• Sicherheitsüberprüfung, Transaktionsverwaltung, Datenbankanfragen ...
■ EJBLocalObject fängt Aufrufe an der Bean ab
◆ Interaktion mit EJBObject über RMI bzw. RMI-IIOP • Interaktion im lokalen Fall teuer (Marshalling und Demarshalling, lokaler Nachrichtentransport etc.)
Client
EJBLocalObject lokale JavaReferenz
Bean-Instanz EJB-Container
◆ auch hier: implizite Interaktion mit der Middleware
D.35 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
D.36 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
6.2 Interaktion mit Beans (4)
6.2 Interaktion mit Beans (5)
■ Zusammenhänge
■ Zusammenhänge (fortges.)
◆ Methoden der Bean-Klasse
◆ kein syntaktischer Zusammenhang zwischen den zwei Interfaces und der BeanKlasse
◆ Methoden des EJBObject (entferntes Bean-Interface)
◆ Zusammenhang kann vom Bean-Entwickler durch eigenes Interface eingezogen werden
◆ Methoden des EJBLocalObject (lokales Bean-Interface) ◆ Methoden der Bean müssen mit gleicher Signatur im Bean-Interface des EJBObject auftreten (jedoch hier mit Exception java.rmi.RemoteException) ◆ Methoden der Bean müssen mit gleicher Signatur im lokalen Bean-Interface des EJBLocalObject auftreten (jedoch hier u.U. ohne Exception java.rmi.RemoteException)
• Bean-Klasse erbt von eigenem Business-Logic-Interface • EJBObject- und EJBLocalObject-Interface erbt von eigenem Business-LogicInterface
◆ Methoden der Bean benötigen keine java.rmi.RemoteException • Methoden der Bean können EJB-System-Exceptions werfen • diese werden nicht an den Client weitergegeben
D.37 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
6.3 Erzeugung von Beans
D.38 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
6.3 Erzeugung von Beans (2)
■ Eigentlich Erzeugung von EJBObjects bzw. EJBLocalObjects
■ Beispiel: entferntes Home-Object
◆ Erzeugung der Bean-Instanz erfolgt implizit durch die Middleware bzw. den EJBContainer
RMIReferenz
■ Erzeugung über Factory-Pattern
EJBHome
Client
◆ Schnittstelle zur Factory heißt Home-Object
EJBObject
■ Repräsentant für ein Home-Object
Bean-Instanz EJB-Container
◆ implementiert ein entferntes oder lokales Home-Interface • Home-Interface muss von javax.ejb.EJBHome bzw. java.ejb.EJBLocalHome erben
◆ Erzeugung des EJBObject durch Aufruf der create()-Methode am EJBHome (z.B. über RMI-IIOP)
• ersteres implementiert java.rmi.Remote, letzteres nicht
◆ Rückgabe der Referenz auf das EJBObject
• deklariert Methoden zur Bean-Erzeugung, z.B. create() ◆ Implementierung des Home-Object herstellerspezifisch ◆ Finden des Home-Object durch Namensdienst (typisch über JNDI)
D.39 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
D.40 2002-2004, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-AvID-D-EJB.fm, 2005-04-20 11.21] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/