1 web & datenbanken komponentenarchitekturen, enterprise java beans (ejb) michael klein,...
TRANSCRIPT
![Page 1: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/1.jpg)
1
Web & Datenbanken
Komponentenarchitekturen,
Enterprise Java Beans (EJB)Michael Klein, 23.06.2005
Vorlesung „Informationssysteme: Neuere Konzepte“
Teilweise basierend auf Folien von Daniel Pfeifer, IPD
![Page 2: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/2.jpg)
2
Motivation für EJB
Große Geschäftsanwendung: z.B. Banksystem
DB
Server Server
Klient Klient Klient
Früher: Großes, monolithisches SystemHeute: Verteilte, webbasierte Architektur
Um welche Probleme müssen wir uns kümmern?
![Page 3: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/3.jpg)
3
Infrastrukturelle Probleme in verteilten Systemen
Entfernte Methodenaufrufe
Lastbalancierung
Transparentes Failover(Unmerkliche Umleitung eines Klienten auf einen anderen Server im Fehlerfall)
Festschreibung von Geschäftsdaten
Transaktionsverwaltung
Dynamische Softwareupdates
Logging
Mehrfädrigkeit (Multithreading)
Resource pooling
Sicherheit
Caching
MiddlewareAllg.: Schwierig, aufwändig zu programmieren
![Page 4: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/4.jpg)
4
Idee: Server für Middlewaredienste
Server, der diese Middlewaredienste anbietet:Applicationserver
Applikation = Code, der in der Laufzeitumgebung des Applicationservers abläuft
Divide and conquer: Trenne infrastrukturelle Aspekte aus dem Anwendungscode und überlasse sie dem Applicationserver
![Page 5: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/5.jpg)
5
Weitere Idee: Komponenten
Idee: Zerlege Anwendung in wieder verwendbare Komponenten
Komponente:Stück Software, welches eine wohldefinierte Schnittstelle implementiert.
keine gesamte Anwendung
![Page 6: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/6.jpg)
6
Komponente – Beispiel (1)
Preis-Komponente für Computerhardware
Input: Menge von ProduktenOutput: Endpreis
calculateTeilprobleme: Basispreis Mengenrabat
te Bundle-
Rabatte Sonderpreis Steuern Porto...
![Page 7: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/7.jpg)
7
Komponente – Beispiel (2)
Preiskomponente auch für andere Gebiete sinnvoll
Z.B. bei Autoherstellern zur Berechnung von
Preisanfragen über das Internet Postfilialen zur Berechnung von Preisen am
Schalter Online-Buchhändlern als ein Teil eines
komplexeren Workflows
Kapselung der Logik als wieder verwendbare Komponente
Entstehung eines Komponentenmarktplatzes
![Page 8: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/8.jpg)
8
Komponentenarchitektur
Komponentenarchitektur:Satz von Vereinbarungen zwischen Komponenteund Applikationsserver, in dem sie läuft
ApplicationServer
Komponente Vereinbarte Schnittstelle(spezifiziert
durch Komponentenarchitektur)
![Page 9: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/9.jpg)
9
EJB als Komponentenarchitektur
Enterprise Java Beans (EJB):Komponentenarchitektur für serverseitige Javakomponenten
Enterprise Bean:Eine EJB-Komponente• „deployable“• Können in Applikationsserver geladen und ausgeführt werden
Vorteile von EJB: Von Industrie standardisiert EJB-Spezifikation ist frei erhältlich (650-seitiges PDF-File) Schnellere Applikationserstellung
![Page 10: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/10.jpg)
10
Warum Java?
Trennung von Interface und Implementierung
Sicherheit Keine Zeiger Keine Speicherlöcher Threadverwaltung
Große Klassenbibliothek
Plattformübergreifend
![Page 11: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/11.jpg)
11
Andere Komponentenarchitekturen
Microsoft .NET
Common Object Request Broker Architecture (CORBA)
Sun Open Net Environment (ONE)
![Page 12: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/12.jpg)
12
Aufgaben von EJBs
Ausführung von Geschäftslogik Steuerberechnung Einkaufwagen Testen von Authentifizierung, Autorisierung Senden von Bestätigungsmails
Zugriff auf Datenbanken Eintragen einer Buchbestellung Überweisen von Geld zwischen Konten Anfragen einer Fehlerdatenbank
Zugriff auf externe Systeme SAP R/3, COBOL-Anwendung etc.
![Page 13: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/13.jpg)
13
Wer ruft EJBs auf?
EJBs sind keine GUI-Komponenten!
Komponente
Dynamisch erzeugte Webseiten• Servlet• JSP
Rich Clients• Java Applet• Anwendungsprogramm
Als Webservice• SOAP, UDDI,
WSDL
![Page 14: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/14.jpg)
14
Rollen beim Einsatz von EJBs
Tool Provider
EJ Bean Provider
EJB Server Provider
ApplicationAssembler
Deployer System Administrator
Tools
EJBs
Application
EJB Server
System
![Page 15: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/15.jpg)
15
EJB und J2EE (Java 2 Enterprise Edition)
J2EE ist eine Ansammlung von Java-Technologien bzw. Standards, die das Komponentenmodell unterstützen Spezifikation, kein Produkt!
Sun liefert zum Teil Implementierungen oder definiert Standards, die von anderen Herstellern zu erfüllen sind
EJB ist ein Teil von J2EE mit einer Referenzimplementierung von Sun
http://java.sun.com/j2ee
![Page 16: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/16.jpg)
16
Ausschnitt aus den J2EE-Technologien (1)
JSP, Java-Servlet (bekannt)
JDBC (bekannt)
Java Transaction API (JTA/JTS) für verteilte logische Transaktion
Java Naming and Directory Service (JNDI): Verzeichnisdienst für Java
Remote Method Invocation (RMI): entfernter Methodenaufruf über Prozessgrenzen hinweg, inzwischen mit CORBA-Integration (RMI-IIOP)
![Page 17: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/17.jpg)
17
Ausschnitt aus den J2EE-Technologien (2)
EJB
JavaMail
Java Messaging Service (JMS): asynchrones, zuverlässiges Verschicken von Nachrichten in Objektform
Java Connector Architecture (JCA) zur standardisierten Integration von ERP-Systemen wie SAP
Java API for XML Parsing (JAXP)
Java Authentication and Authorization Service (JAAS)
Zu jeder dieser Technologien gibt es eine API, eine Spezifikation und mind. eine Implementierung
![Page 18: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/18.jpg)
18
Grundsätzliche Architektur von EJB (1)
EJB: Menge von Java-Klassen (3 oder 5) mit genormter Struktur
Ausführung dieser Klassen kommen in einem EJB-Containern
EJB-Container: Repräsentation eines Applikations-Servers
Klienten können über/durch den EJB-Container auf die EJBs zugreifen und deren Methoden aufrufen
Die Methodenaufrufe erfolgen üblicherweise über RMI (Remote Method Invocation)
Der EJB-Container nimmt den Aufruf entgegen und delegiert ihn an eine entsprechende EJB
![Page 19: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/19.jpg)
19
Grundsätzliche Architektur (2)
![Page 20: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/20.jpg)
20
Grundsätzliche Architektur (3)
DelegationsprinzipDelegationsprinzip • der Container erhält Kontrolle über die
EJB-Aufrufe transparent zusätzliche Funktionalität
bereitstellbar:• Sicherheit• Rechteverwaltung• Transaktionalität• Persistenz• Lebenszyklusverwaltung von EJBs• Nebenläufigkeit von Beans
![Page 21: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/21.jpg)
21
2 Arten von EJBs
Session Beans: Realisieren Workflows und Dienste Können für statische Funktionalität benutzt
werden Mit Zustand (stateful) oder zustandslos (stateless) Nicht persistierbar Bsp: Kreditkartenautorisierer, DNA-Sequenzer
Entity Beans Repräsentieren Zustand und Verhalten realer
Objekte (zum Beispiel eines Artikels) Werden persistent in einer Datenbank gespeichert Bsp: Bankkonto, Bestellung, Produkt, DNA-Strang
![Page 22: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/22.jpg)
22
Aufgabe: Finden von Session und Entity Beans
Bei der Warenkorbfunktionalität eines Webshobs soll der Kunde die Möglichkeit haben, seine aktuellen ausgewählten Artikel sowie alte Aufträge einsehen zu können. Die Anzeige kann in einer gewünschten Währung erfolgen und berechnet automatisch die anfallenden Portokosten. Nach einem Klick auf „Abschicken“ erhält der Kunde ein persönliches Bestätigungsschreiben und seine Bestellung wird in das System aufgenommen. Er wird anschließend auf eine Seite geleitet, auf der er weitere passende Angebote erhält.
![Page 23: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/23.jpg)
23
Klienteninteraktion mit Beans
ApplicationServer
EJB SessionBean
EJB SessionBean
EJB EntityBean
C++ ClientJava-
ApplikationJava-Applet
Servlet JSP
Webserver
BrowserAnwendung von Geschäftspartne
rnHTML SOAP
CORBA/IIOP RMIRMI
![Page 24: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/24.jpg)
24
Eine EJB im Detail (1)
3 (Java-) Klassen bzw. Interfaces Die Bean-Klasse: Funktionalität der Bean
(wichtigste Klasse) Das Home-Interface: Schnittstelle zum
Erzeugen, Finden und Löschen von EJBs durch Klienten
Das Remote-Interface stellt die „öffentlichen“ Methoden aus der Bean-Klasse den Klienten (für den Aufruf über RMI) zur Verfügung
Analog zu Home- und Remote-Interface können noch zwei weitere Klassen (Local-Home- und Local-Remote-Interface) für nicht-RMI-Zugriffe auf Beans hinzukommen...
![Page 25: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/25.jpg)
25
Eine EJB im Detail (2)
![Page 26: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/26.jpg)
26
EJB-Object
EJB-Container = Indirektionsstufe zwischen Klient und Bean
Aufruf der Bean nie direkt, sondern immer über EJB-Object
EJB-Object weiß bescheid über Netzwerk Transaktionsschutz Sicherheit
EJB-Object = Teil des Kontainers, wird automatisch vom Server-Provider aus der Enterprise Bean erzeugt.
![Page 27: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/27.jpg)
27
Delegation über EJB-Object
![Page 28: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/28.jpg)
28
Klientenzugriff auf eine EJB (1)
Die Klient besorgt sich Zugriff auf einen als bekannt vorausgesetzten JNDI-Server
Über JNDI (dem Java Verzeichnis-Dienst) sucht (und findet) er das Home-Interface der entsprechenden EJB
Möglich, weil das entsprechende EJB-Home-Interface mit einem Namen (einem Java-String) im JNDI-Verzeichnis registriert sein muss.
Über das Home-Interface kann man dann EJBs mit speziellen find- und create-Methoden finden bzw. erzeugen.
Man erhält dann eine RMI-Referenz auf eine Bean. Die Referenz implementiert das Bean-Remote-Interface
![Page 29: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/29.jpg)
29
Klientenzugriff auf eine EJB (2)
![Page 30: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/30.jpg)
30
Beispiel EJB: Hello World
Komplett lauffähiger Code für EJB und aufrufenden Klient
Implementiert als stateless Session-Bean (zustandslos, nicht persistent)
Liefert den String „Hello, World!“ an den Klienten, dieser gibt in auf der Konsole aus
![Page 31: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/31.jpg)
31
Hello World: Hello.java
package hello;
/** * This is the HelloBean remote interface. */public interface Hello extends javax.ejb.EJBObject{
/** * The one method - hello - returns a greeting to the client. */ public String hello() throws java.rmi.RemoteException;}
Remote Interface
![Page 32: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/32.jpg)
32
Hello World: HelloBean.java
package hello;import javax.ejb.SessionContext;
// Implemented as stateless session bean.public class HelloBean implements javax.ejb.SessionBean{ // EJB-required methods public void ejbCreate() {} public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {} public void setSessionContext(SessionContext ctx) {} // Business methods public String hello() {
return "Hello, World!"; }}
Bean
![Page 33: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/33.jpg)
33
Hello World: HelloHome.java
package hello;
/** * One create() method is in this Home Interface, which * corresponds to the ejbCreate() method in HelloBean. */public interface HelloHome extends javax.ejb.EJBHome{
/* * This method creates the EJB Object. * * @return The newly created EJB Object. */ Hello create() throws java.rmi.RemoteException, javax.ejb.CreateException;}
Home Interface
![Page 34: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/34.jpg)
34
Hello World: HelloClient.javapackage hello;import javax.naming.Context;import javax.naming.InitialContext;import java.util.Properties;
public class HelloClient {public static void main(String[] args) throws Exception {
Properties props = System.getProperties();
// Obtain the JNDI initial context.Context ctx = new InitialContext(props);
// Get a reference to the hello home objectObject obj = ctx.lookup("ejb/local/examples/HelloWorld");HelloHome home = (HelloHome) javax.rmi.PortableRemoteObject.narrow(obj, HelloHome.class);
// Creat an instance of the hello ejb through hello homeHello hello = home.create();
// Call the hello() method on the EJB object.System.out.println(hello.hello());
// Remove the ejb instance.home.remove();
} }
![Page 35: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/35.jpg)
35
Besonderheiten
Hello, HelloBean und HelloHome erweitern jeweils Standard-EJB-Schnittstellen (nämlich EJBObject, SessionBean bzw. EJBHome
Notwendig damit der EJB-Container die EJB gemäß der Spezifikation verwalten kann!
Die Methoden ejbCreate(), ejbRemove(), ejbActivate(), ejbPassivate() werden vom EJB-Container als „Callbacks“ beim Lebenszyklusmanagement aufgerufen
Die EJB hat dann die Möglichkeit noch Aktivitäten auszuführen, bevor der Container in den Lebenszyklus eingreift.
![Page 36: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/36.jpg)
36
Lebenszyklus einer Bean
Um Ressourcen (wie etwa Hauptspeicher) zu schonen kann und darf der Container Beans auslagern (zum Beispiel serialisiert auf die Festplatte schreiben) und später – wenn notwendig – wieder einlagern
Bean-Instanzen können auch in Pools vorgehalten werden um dann effizient aktiviert zu werden (instance pooling)
Die Methoden der vorigen Folien unterstützen diese Vorgänge von Seiten der Bean
![Page 37: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/37.jpg)
37
Lebenszyklusdiagramm für Stateful Session-Beans
![Page 38: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/38.jpg)
38
Installation von Beans
Beans sollen installiert (deployed) werden können, während der EJB-Server arbeitet (hot deployment)
Das ist wichtig, wenn der EJB-Server unternehmenskritische Anwendungen birgt (Beispiel Bank-Server, Einkaufsportal...)
Deployment ist eigenständiger Prozess
Funktionsweise hängt vom EJB-Server-Produkt ab (bei JBoss: entspr. Dateien in ein besonderes Verzeichnis kopieren...)
![Page 39: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/39.jpg)
39
Format für Bean-Deployment
Ist durch den EJB-Standard spezifiziert
Die kompilierten Klassen einer EJB werden in ein Java-Archiv gepackt (.jar Datei)
Zusätzlich: Meta-Informationen über die EJB in einer XML-Datei – dem Deployment Descriptor
.jar und xml Datei werden (mit einigen weiteren Dateien) zu einem Enterprise Archiv (.ear Datei ähnlich zu .jar Datei) geschnürt.
Diese Datei wird dann „deployed“.
![Page 40: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/40.jpg)
40
Deployment Deskriptor
Enthält viele wichtige Infos für den EJB-Container, damit dieser weiß, wie er eine EJB behandeln soll
Geht nicht notwendig aus den Klassen der EJB hervor
U.a. beschreibt der Deskriptor wie eine Bean zu behandeln ist bzgl.
Transaktionalität Zugriffrechten und Schutz Persistenz Failover (Verhalten beim Absturz der EJB-Servers) Nebenläufigkeit
Struktur eines Deskriptors ist Teil des EJB-Standards
![Page 41: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/41.jpg)
41
Der HelloWorld-Deskriptor
<ejb-jar> <enterprise-beans> <session> <ejb-name>Hello</ejb-name> <home>hello.HelloHome</home> <remote>hello.Hello</remote> <local-home>hello.HelloLocalHome</local-home> <local>hello.HelloLocal</local> <ejb-class>hello.HelloBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans></ejb-jar>
![Page 42: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/42.jpg)
42
EJB und Datenbanken
![Page 43: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/43.jpg)
43
Entity Beans (1)
Repräsentieren persistente Zustände
Der Standard für Entity-Beans ist auf ein (simples) Objekt-Relationales-Mapping ausgelegt, d.h. Speicherung in relationaler DB
Andere Persistenztechniken möglich
![Page 44: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/44.jpg)
44
Entity Beans (2)
Persistenz kann vom EJB-Container (transparent) erledigt werden CMP – container managed persistence
... oder von Hand in der Entity Bean programmiert werden BMP – bean managed persistence
Im 2. Fall kann man zum Beispiel JDBC verwenden
![Page 45: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/45.jpg)
45
Zur Verdeutlichung...
![Page 46: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/46.jpg)
46
CMP versus BMP
Wie gesehen: bei BMP muss man O/R Mapping für jede Klasse „von Hand“ programmieren
Man muss aber nicht JDBC verwenden
Bei CMP über nimmt der Container die Implementierung/Umsetzung der ejbLoad(), ejbStore(), ejbCreate(), ejbRemove() – Methoden
Detaillierte Mapping-Infos kommen in den Deployment-Deskriptor und in container-spezifische XML-Dateien
![Page 47: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/47.jpg)
47
Was sind also EJBs?
Was sind Enterprise Java Beans (EJB)?
Serverseitige Komponentenarchitektur zur einfachen
Erstellung von komponentenbasiertenAnwendungen, die verteilt skalierbar zuverlässig sichersind, ohne die komplexen
Infrastrukturaufgabenselbst programmieren zu müssen.
Bereitstellung der Infrastruktur durch industrielle Applicationserver.
![Page 48: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/48.jpg)
48
Zusammenfassung
Komponente
Middleware
Applicationserver
Komponentenarchitektur
EJB-Kontainer
Delegation
Session-Bean vs. Entity Bean
CMP vs. BMP
Home vs. Remote Interface
EJB-Object
J2EE
![Page 49: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/49.jpg)
49
Literatur
Buch
Ed Roman, Scott Ambler, Typer JewellMastering Enterprise Java Beans (2nd Edition)WileyISBN 0-471-41711-4
Auch kostenlos im Internet herunterladbar(Anmeldung erforderlich):
http://www.theserverside.com/books/wiley/masteringEJB/
![Page 50: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/50.jpg)
50
ANHANG(für Interessierte)
![Page 51: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/51.jpg)
51
Entity Bean – Beispiel Code
Repräsentiert Personen-Objekte mit Namen und Id (Schlüssel)
BMP
Daten über JDBC in rel. Datenbank gespeichert
Neben Standard Bean-Klassen gibt es noch die PersonPK (=Primary Key) die den DB-Schlüssel Id repräsentiert
DB besteht aus (einziger Tabelle) Person(id, ownerName)
![Page 52: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/52.jpg)
52
Person.java
package examples;
import javax.ejb.*;import java.rmi.RemoteException;
public interface Person extends EJBObject {
public String getName() throws RemoteException;public void setName(String name) throws RemoteException;public String getID() throws RemoteException;public void setID(String id) throws RemoteException;
}
Remote Interface
![Page 53: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/53.jpg)
53
PersonHome.java
package examples;
import javax.ejb.*;import java.util.Collection;import java.rmi.RemoteException;
public interface PersonHome extends EJBHome { public Person create(String id, String ownerName) throws CreateException, RemoteException;
public Person findByPrimaryKey(PersonPK key) throws FinderException, RemoteException;}
Home Interface
![Page 54: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/54.jpg)
54
PersonPK.java
package examples;
import java.io.Serializable;
public class PersonPK implements java.io.Serializable { public String personID;
public PersonPK(String id) { this.personID = id; }
public PersonPK() {}
public int hashCode() { return personID.hashCode(); } public boolean equals(Object person) { return ((PersonPK)person).personID.equals(personID); } }
Bean
PK = Primary Key
![Page 55: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/55.jpg)
55
PersonBean.java (1)
package examples;
import java.sql.*;import javax.naming.*;import javax.ejb.*;import java.util.*;
public class PersonBean implements EntityBean {protected EntityContext ctx;
private String id; // PKprivate String ownerName;public AccountBean() {}
public void setOwnerName(String name) { ownerName = name; }public String getOwnerName() { return ownerName; }public String getID() { return id };public void setID(String id) { this.id = id; }
Bean
![Page 56: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/56.jpg)
56
PersonBean.java (2)
public void ejbRemove() throws RemoveException { PersonPK pk = (PersonPK) ctx.getPrimaryKey(); String id = pk.id;
PreparedStatement pstmt = null; Connection conn = null; try { conn = getConnection(); pstmt = conn.prepareStatement("delete from persons where id = ?"); pstmt.setString(1, id); if (pstmt.executeUpdate() == 0) { throw new RemoveException("Person " + pk + " failed remove."); } } catch (Exception ex) { throw new EJBException(ex.toString()); } finally { /* ... close JDBC resources... */ } }
![Page 57: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/57.jpg)
57
PersonBean.java (3)
public void ejbLoad() { PersonPK pk = (PersonPK) ctx.getPrimaryKey(); String id = pk.id; PreparedStatement pstmt = null; Connection conn = null; try { conn = getConnection(); pstmt = conn.prepareStatement( "select ownerName from persons where id = ?"); pstmt.setString(1, id); ResultSet rs = pstmt.executeQuery(); rs.next(); ownerName = rs.getString("ownerName"); } catch (Exception ex) { throw new EJBException("Person " + pk + " failed to load.", ex); } finally { // ... close JDBC resources... } }
![Page 58: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/58.jpg)
58
PersonBean.java (4)
public PersonPK ejbFindByPrimaryKey(PersonPK key) throws FinderException { PreparedStatement pstmt = null; Connection conn = null; try { conn = getConnection(); pstmt = conn.prepareStatement("select id from persons where id = ?"); pstmt.setString(1, key.toString()); ResultSet rs = pstmt.executeQuery(); rs.next(); return key; } catch (Exception e) { throw new FinderException(e.toString()); } finally {
// ... close JDBC resources... }}
![Page 59: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/59.jpg)
59
PersonBean.java (5)
public void ejbActivate() {}public void ejbPassivate() {}public void setEntityContext(EntityContext ctx) { this.ctx = ctx; }public void unsetEntityContext() { this.ctx = null; }public void ejbPostCreate(String accountID, String ownerName) {}
public void ejbStore() { // ... Ähnlich wie ejbLoad ...}
public PersonPK ejbCreate(String id, String ownerName) throws CreateException { // ... Ähnlich wie ejbFindByPrimaryKey ...}
![Page 60: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/60.jpg)
60
PersonBean.java (6)
public Connection getConnection() throws Exception { try { Context ctx = new InitialContext(); javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/jdbc/ejbPool"); return ds.getConnection(); } catch (Exception e) { throw e; }}
![Page 61: 1 Web & Datenbanken Komponentenarchitekturen, Enterprise Java Beans (EJB) Michael Klein, 23.06.2005 Vorlesung Informationssysteme: Neuere Konzepte Teilweise](https://reader036.vdocuments.net/reader036/viewer/2022062318/55204d7e49795902118cff4b/html5/thumbnails/61.jpg)
61
Ok – eine Menge Code...
Das meiste sind JDBC Zugriffe die Tabellenzeilen auf EJB-Felder abbilden
Noch mehr Callbacks als bei Session Beans: PersonBean erweitert javax.ejb.EntityBean und
muß nun ejbLoad() zum Laden der Bean aus der DB und ejbStore() zum Speichern den Bean in DB
implementieren sowie einige weiter Methoden...
ejbFind...() Methoden dienen zum Finden von Enitity Beans über Suchkritierien
Es werden dann (meist) Kollektionen von Schlüsseln (wie etwa PersonPK) zurückgegeben.