D Enterprise Java Beans

1 J2EE ■ Java 2 Enterprise Edition ◆ Erweiterungen zum Standard Java (J2SE, Java 2 Standard Edition) ◆ EJB 2.0 (Enterprise Java Beans) ◆ JDBC 2.0 (Jav...
Author: Dieter Fromm
6 downloads 0 Views 987KB Size
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/

Suggest Documents