Ein Überblick von Oliver Hilß und Stefan Zier Agenda - Teil 1 • • • • • • Sind EJBs JavaBeans? Grundlagen für EJBs JNDI Distributed Transactions Der Bean Container Vergleich Sind EJBs Java Beans? • Enterprise Java Beans (EJB) und Java Beans haben technisch keinerlei Gemeinsamkeiten • EJB sind ein Framework, mit dem man schnell Enterprise Applikationen entwickeln kann (Application Flow ist vordefiniert) • Java Beans sind Komponenten, aus denen man Applikationen zusammenbauen kann (Application Flow muß erstellt werden) Grundlagen für EJBs • RMI (Remote Method Invocation) • JNDI (Java Naming and Directory Interface) • Distributed Transactions JNDI • JNDI ist eine Standard Java Extension • Ermöglicht den Zugriff auf Verzeichnisund Namensdienste • Zugriff auf Dienste wie X.500, LDAP, NIS, DNS, COS Naming, RMI Registry uvm. über sog. Service Provider • Bestandteil des JDK 1.2 Standard Edition und JDK 1.2 Enterprise Edition Distributed Transactions • Gewährleistung der ACID-Properties (Atomicity, Consistency, Isolation, Durability) in verteilten Systemen • 1 Transaktionskontext pro Transaktion • Mehrere Teilnehmer (Ressourcen) in einem Transaktionskontext • Transaktionsmanager kümmert sich um die Einhaltung des Two-Phase-Commit Protokolls Der Bean Container 1 • EJBs werden in einem sog. Bean Container ausgeführt (deployment) • Clients kommunizieren ausschl. mit dem Container, nie direkt mit dem Bean • 2 Interfaces zum Bean: Home Interface für das Lifecycle Management und Remote Interface zur Nutzung der eigentlichen Funktionalität Der Bean Container 2 • Container managed Security • Container managed Multithreading und Systemressourcen • Container kann Beans auslagern (passivation) • Container managed Persistenz • Container fungiert ggf. als Transaktionsmanager (implizites Transaktionsmanagement) Der Bean Container 3 Home Interface Remote Interface Client Bean Container Enterprise Java Bean Remote Interface Enterprise Java Bean Der Bean Container 4 Home Interface Remote Interface Client Bean Container EJB Object Remote Interface EJB Object Enterprise Java Bean Enterprise Java Bean Vergleich • “normale” Enterprise Applikationen sind oft monolithisch • Eigentliche Business Funktionalität oft vermischt mit Transaktionshandling und Security • dadurch schwer zu pflegen und erweitern • Einsatz von TP-Monitoren zur Abhilfe • Starke Ähnlichkeit zwischen TPMonitoren und EJBs Agenda - Teil 2 • • • • • • • Session/Entity Beans Lifecycle Management Ressourcen Transaktionsmanagement Fallbeispiel Andere Technologien Produkte Session/Entity Beans • • • • Zwei unterschiedliche Arten von EJBs Session Beans stellen Logik dar Entity Beans stellen Daten dar Home Interface von Entity Beans hat Finder-Methoden, um Beans anhand von Suchprädikaten aufzufinden (Materialisierung) • stateful und stateless Session Beans • Bei stateless Session Beans oft Load Balancing Mechanismen Lifecycle Management • Starke Unterschiede zwischen Session und Entity Beans • Entity Beans werden in aller Regel persistent gespeichert • Für Entity Beans kann zur Deployment Time ein Mapping zu einem Datenbanksystem festgelegt werden • Session Beans werden nicht persistent gespeichert Ressourcen • Ressourcen sind bei EJBs immer transaktional • Beispiele: Datenbanken, Verzeichnisdienste • EJB-Ressourcen entsprechen der von der OSF (Open Software Foundation) festgelegten XA Spezifikation für verteilte Transaktionen Transaktionsmanagement • EJBs können unterschiedliche Modi in Hinsicht auf Transaktionen verfolgen: – TX_NOT_SUPPORTED – TX_SUPPORTS – TX_REQUIRED – TX_REQUIRED_NEW – TX_MANDATORY – TX_BEAN_MANAGED Fallbeispiel • Überweisung eines Betrages von einem Bankkonto auf ein Konto bei einer anderen Bank • Transaktionale Ressourcen: – Kontendatenbank der eigenen Bank – Kontendatenbank der anderen Bank Fallbeispiel Home Interface Client Bean Container Kontomanager Fallbeispiel Client Home Interface Create() Bean Container Kontomanager Fallbeispiel Home Interface Client Bean Container Create() Kontomanager Fallbeispiel Home Interface Remote Interface Client Bean Container Kontomanager EJB Object Fallbeispiel Home Interface Remote Interface Client Bean Container Referenz EJB Object Kontomanager Fallbeispiel Remote Interface Client Home Interface Referenz auf Remote Interface Bean Container Kontomanager EJB Object Fallbeispiel Home Interface Ueberweise() Remote Interface Client Bean Container Kontomanager EJB Object Fallbeispiel Home Interface Ueberweise() Remote Interface Client Bean Container EJB Object Kontomanager Fallbeispiel Home Interface Remote Interface Client Bean Container Prepare() Kontomanager Prepare() EJB Object Fallbeispiel Home Interface Remote Interface Client Bean Container Kontomanager EJB Object Fallbeispiel Home Interface Remote Interface Client Bean Container Kontomanager EJB Object return Fallbeispiel commit() Home Interface Remote Interface Client Bean Container Kontomanager EJB Object rollback() commit() rollback() Fallbeispiel Home Interface return Remote Interface Client Bean Container Kontomanager EJB Object Andere Technologien • CORBA: – mit RMI over IIOP wird es möglich, EJBs von beliebigen Plattformen aus zu nutzen, auf denen ein ORB zur Verfügung steht, – ggf. auch Load Balancing zwischen verschiedenen EJB Containern • Java Servlets: – einfache, nicht-transaktionale Server ohne eingebaute Security – werden oftmals als FrontEnd für EJBAnwendungen verwendet Andere Technologien • Java Messaging Service (JMS): – API für Nachrichtenbasierte, asynchrone Kommunikation – wird oft für Events genutzt – hauptsächlich zur Server-to-ServerKommunikation Produkte • IBM Websphere – verschiedene umfassende E-CommerceProduktpakete, u.a. mit CORBAUnterstützung, EJB-Container, Webserver • BEA Weblogic – komplette Middlewarelösung inklusive JDBC-Treibern, CORBA-Unterstützung, EJB-Container, Servlet-Engine, uvm. • Oracle 8i – Datenbank- und Applikationsserver mit EJB-Container, CORBA-Unterstützung, RMI over IIOP Fragen ?