Datenbanken und Informationssysteme 2 SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 1 Warum EJB Technologie (1)? – – – – – – – – – Verteilte Anwendungen Unabhängige Komponenten auf Serverseite Lastbalancierung Transparenter Ausfall von Komponenten trennt Business-Logik von System-Code Backend-Integration (Datenbank,…) Transaktionen Anwendungs-Zustand retten bei Ausfall Komponenten portabel (EJB Server, Betriebssysteme) Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 2 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 1 Warum EJB Technologie (2)? – – – – – – – – – Sauberes Shutdown Konfiguration zum Zeitpunkt des Deployments Dynamisches (Re-)Deployment von Updates Sicherheit Logging und Auditing (z.B. für Fehlersuche) Multi-Threading Software Message-oriented Middleware Resourcen Pools ( Sockets , DB-Verbindungen ,…) Anwendungsübergreifendes Daten-Caching Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 3 EJBs Antwort : Gekapselte Komponenten (Beans) für alles – Daten (Entity Beans) – Logik (Sessions Beans) – Sichere Nachrichten (Message driven Beans) Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 4 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 2 Arten von Enterprise Java Beans Enterprise Bean Session Bean (für Sitzungen,...) Message-driven Bean (für Messages) mit / ohne Zustand mit / ohne SessionSynchronisation Entity Bean (für persistente Daten) re-entrant (ja / nein) Persistenzbehandlung durch Container / Bean Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 5 Bestandteile von Enterprise Java Beans Ein Komponentenmodell: Die Enterprise Beans: serverseitige Software-Komponenten, die Dienste anbieten sich aber nicht um die Datenhaltung etc. kümmern müssen Clients: Applikationen, die die Dienste der Enterprise Beans nutzen typisch: Oberflächen, Browser, ... Container übernimmt Unterstützung für Transaktionen, Verwaltung mehrerer Instanzen, persistente Datenhaltung und Sicherheit für Dienste des Servers (Enterprise Beans) EJB Server bietet Low-Level-Dienste wie Netzwerkanbindung Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 6 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 3 Enterprise Java Beans (EJB) Client EJB Home Interface EJB Remote Interface EJB Bean EJB Container Vorteile: Klare BeanSchnittstellen EJB Server Bean (Komponente) verwendet Container (z.B. für Transaktionen) Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 7 Schnittstellen von EJB Schnittstellen: Home-Interface: damit erzeugt ein Client auf dem Server eine Enterprise Bean oder findet eine erzeugte Bean wieder Remote-Interface: bietet die Business-Logik der Bean Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 8 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 4 RMI und Objektserialisierung RMI: Aufruf von Methoden in entfernt definierten Klassen RMI-Server RMI-Client RMI-Verbindung Registrierung via rmiregistry RMI-Compiler erzeugt aus Klassen Stubs und Skeleton-Klassen Binden der Objekte , dann Aufruf wie bei lokalen Objekten Serialisierung: Objekte werden als Datenstrom übertragen Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 9 RMI-Code (Client) import java.rmi.*; Entfernter Server (Typ=interface) public class Bank { public interface RemoteBank extends Remote { public String conc(String s1, String s2) throws RemoteException ; } // interface für Server // was Server bietet IP Servicename public static void main(String[] args) { try { // Suche Server mit Name "bankname" RemoteBank bank = // Serverobjekt (RemoteBank) Naming.lookup("rmi://192.168.1.101/bankname"); String ret = bank.conc(args[0], args[1]); // Aufruf an Serverobjekt System.out.println(ret) ; } // Fange und zeige RMI-Exceptions catch (Exception e) { System.out.println(e); } } // main } Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 10 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 5 RMI-Code (Server) import java.rmi.*; import java.rmi.server.*; import Bank.*; // lade das Interface für RemoteBank public class RemoteBankServer extends UnicastRemoteObject implements RemoteBank { public RemoteBankServer() throws RemoteException { super(); } // Implementierung der Remote-Methode conc aus Interface RemoteBank public synchronized String conc (String s1, String s2) throws RemoteException { System.out.println( s1 + " :: " + s2 ) ; return s1+s2 ; } public static void main(String[] args) { try { RemoteBankServer bank = new RemoteBankServer(); // erzeugt Serverobjekt Naming.rebind("bankname", bank); // sein Name ist "bankname" System.out.println("bankname ist bereit."); } catch (Exception e) { System.err.println(e); } } } Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 11 Java-Archive Zusammenfassung mehrere übersetzter Java-.class-Files Erzeugen mit: C:\java> jar cf sammlung.jar *.class [evtl. weitere Dateien] Jar-File verwenden im Applet-Tag: <Applet archive=“sammlung.jar“ code=“applet1.class“ width=“400“ height=“200“> </Applet> applet1.class wird gestartet in sammlung.jar werden alle benötigten Klassen gesucht Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 12 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 6 Implizite Middleware Eigenes EJB Objekt für Aufruf der Middleware-Funktionalität Atomare Transaktionen, Persistenz, Security, … Middleware verborgen ⇒ Atomare Transaktionen, Persistenz, Security, … müssen nicht explizit programmiert werden ⇒ Einbindung externer Anbieter möglich Middleware austauschbar ⇒ ohne Code-Änderung für Anwendungsprogrammierer Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 13 Das J2EE Komponenten-Modell EJB Container Client method x delegation EJB Object result(s) method x method x Bean Instance result(s) Service Interaction TXN Service, Security Service, Persistence Service, etc. calling direction returning direction Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 14 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 7 Das J2EE Komponenten-Modell EJB Container finder method Client ejbFinder method Home Object Retrieve Home Object Reference method x delegation method x EJB Object result(s) method x EntityBean Instance result(s) JNDI Service Interaction Return Home Object Reference Naming Service TXN Service, Security Service, Persistence Service, etc. Entity Bean Data calling direction returning direction Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 15 Das J2EE Komponenten-Modell EJB Container finder method Client ejbFinder method Home Object primary key(s) ejb object(s) ejb object(s) Retrieve Home Object Reference create ejb object(s) from primary key(s) method x delegation EJB Object result(s) method x JNDI method x Entity Bean Instance result(s) Service Interaction Return Home Object Reference Naming Service TXN Service, Security Service, Persistence Service, etc. Entity Bean Data calling direction returning direction Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 16 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 8 Das J2EE Komponenten-Modell Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 17 Eigenschaften aller Enterprise Beans Enterprise Beans Session Beans Message-driven Beans Stateless Stateful Container- BeanManaged Managed n n n n n Entity Beans serverseitige Software-Komponente implementiert Remote- und Home-Interface benutzt für Geschäftslogik kann aus Java-Objekten bestehen Client eines Beans kann sein: – servlet, – applet, etc., – andere Enterprise Bean Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 18 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 9 Session Beans Enterprise Beans Session Beans Entity Beans Message-driven Beans Stateless Stateful Container- BeanManaged Managed – für Programme / Prozeduren / Aktivitäten (Geschäftsprozeß) – jeder Client hat eigene Bean – single Threaded – Zugriff auf Bean-lokale (nicht gemeinsam genutzte) Daten Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 19 Stateless Session Bean Enterprise Beans Session Beans Entity Beans Message-driven Beans Stateless Stateful Container- BeanManaged Managed – kein interner Zustand => weniger Server-Ressourcen steht schneller wieder zur Verfügung – Dienste durch Methoden realisiert Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 20 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 10 Stateful Session Bean Enterprise Beans Session Beans Entity Beans Message-driven Beans Stateless Stateful Container- BeanManaged Managed – interner Zustand der Bean – gespeichert von einem Methoden-Aufruf zum nächsten -> für Geschäftsprozesse, die interne Zustände brauchen (Zähler, etc., …, Workflows) Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 21 Entity Beans Enterprise Beans Session Beans Entity Beans Message-driven Beans Stateless Stateful Container- BeanManaged Managed – – – – Komponente für persistente Daten transparenter Zugriff auf Daten(bank) kapselt persistente Daten speichert Zustand extern (z.B. in relationaler Datenbank) => überlebt Systemabstürze nicht gedacht für Geschäftsprozeß-Logik – Primärschlüssel (für Zeiger in die Datenbank) Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 22 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 11 Container-Managed Persistent Entity Bean Enterprise Beans Session Beans Entity Beans Message-driven Beans Stateless Stateful Container- BeanManaged Managed Transaktionsverwaltung / Persistenz durch Container bzw. Server – Speichern – Laden – Finden von Daten / Objekten => keine Belastung der Anwendungslogik => größere Unabhängigkeit von Datenbank Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 23 Bean-Managed Persistent Entity Bean Enterprise Beans Session Beans Entity Beans Message-driven Beans Stateless Stateful Container- BeanManaged Managed – Eigene Verwaltung persistenter Daten => speichern, laden, finden von Daten muß / kann selbst implementiert werden => mehr Freiheiten Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 24 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 12 Message-driven Bean Enterprise Beans Session Beans Entity Beans Message-driven Beans Stateless Stateful Container- BeanManaged Managed – asynchrone Messages => nicht warten – Garantierte Versendung /Persistenz => ausfallsicher – Viele Sender/Empfänger (Broadcast) Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 25 EJB-Container Umgebung der Beans im EJB-Server bietet den Beans Dienste an, wie • Transaktionen (ACID), • Sicherheit, • Ressourcen-Verwaltung (Aktivierung/Passivierung) • Instanzen-Pools (z.B. Connection-Pooling) • JNDI-Umgebungskontext • Nebenläufigkeit für Entity Beans Dienste müssen nicht verwendet werden Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 26 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 13 Namensdienste – Mechanismus zum Auffinden verteilter Objekte – bietet zwei Fähigkeiten • Binden von Objekten • API zum Nachschlagen (z.B. JNDI) Context ctx = new InitialContext(); TestHome home = (TestHome) ctx.lookup("MyTest"); Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 – Folie EJB - 27 Internet-Technologie für E-Business Prof. Dr. Stefan Böttcher 14