Enterprise JavaBeans Überblick 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Überblick Komponententechnologien Einführung Enterprise JavaBeans Architektur Ressourcen Management und Primäre Services Java Persistence: Entity Manager Objekt-Relationales Mapping Entity Bean Beziehungen Test-Driven Development Architektur der Web-Schicht Queries Value Objects Session Facade Transaktionen und Concurrency Ergänzungen zu Entity Beans 2 UML Modellierung und EJBs Session Beans © Prof. Dr. Björn Dreher Liste V – Enterprise JavaBeans 392 Enterprise JavaBeans Überblick: 12. Session Facade 12.1 12.2 12.3 Einleitung Problem Lösung © Prof. Dr. Björn Dreher Liste V – Enterprise JavaBeans 393 1 12. Session Facade 12.1 Einleitung Ein Use Case EJB Client möchte möglichst effektiv Methoden von mehreren Entity Beans aufrufen Vielleicht ist auch noch eine Session Bean beteiligt Möglichst nur ein Netzwerk-Transfer Möglichst eine Transaktion Viele einzelne Zugriffe auf verschiedene Beans Netzwerk-Overhead Geschäftslogik im Client Transaktionssteuerung im Client © Prof. Dr. Björn Dreher Liste V – Enterprise JavaBeans 394 Enterprise JavaBeans Überblick: 12. Session Facade 12.1 12.2 12.3 Einleitung Problem Lösung © Prof. Dr. Björn Dreher Liste V – Enterprise JavaBeans 395 2 12. Session Facade 12.2 Problem Banken-Szenario (EJB 2.1) Überweisung zwischen zwei Konten Objekt1 UserHome User AccountHome Account1 Account2 findByPrimaryKey(pk) isAuthorized() findByPrimaryKey(acc1Pk) findByPrimaryKey(acc2Pk) withdrawMoney(amount) depositMoney(amount) © Prof. Dr. Björn Dreher Liste V – Enterprise JavaBeans 396 12. Session Facade 12.2 Problem Banken-Szenario Keine gute Skalierung unter hoher Last 6 Netzwerk-Calls 3 um entsprechende Beans zu finden 3 für den tatsächlichen Geldtransfer Client könnte im selben Server sein Local Interfaces könnten benutzt werden Entity Beans unterliegen Transaktionen Client müsste sich um Transaktionssteuerung kümmern © Prof. Dr. Björn Dreher Liste V – Enterprise JavaBeans 397 3 12. Session Facade 12.2 Problem Nachteile Hohe Netzwerkbelastung Schlechte Concurrency Möglicherweise lange Transaktionszeiten (Client weit weg) Hohe Kopplung zwischen Client und Entity Beans Schlechte Wiederverwendbarkeit Geschäftslogik im Client Andere Clients können sie nicht wiederverwenden Schlechte Wartbarkeit Transaktionssteuerung im Client (Java Transaction API) Besser: Deklarative Transaktionssteuerung © Prof. Dr. Björn Dreher Liste V – Enterprise JavaBeans 398 Enterprise JavaBeans Überblick: 12. Session Facade 12.1 12.2 12.3 Einleitung Problem Lösung © Prof. Dr. Björn Dreher Liste V – Enterprise JavaBeans 399 4 12. Session Facade 12.3 Lösung Umhülle Entity Beans mit einer oder mehreren Session Beans In EJB 3.0 sowieso nötig Jede Session Bean enthält Geschäftslogik, um Use Cases zu implementieren Umfangreichere Operationen mit mehreren Entity Beans aufgrund einer Anforderung des Klienten Klienten sollten nur zu Session Beans Zugang haben, nicht zu Entity Beans © Prof. Dr. Björn Dreher 400 Liste V – Enterprise JavaBeans 12. Session Facade 12.3 Lösung Vorheriges Beispiel Servlet SessionBean EntityManager User Account1 Account2 transferMoney(userPk, acc1Pk, acc2Pk, amount) find(User.class,pk) isAuthorized() Netzwerk find(Account.class,acc1Pk) find(Account.class,acc2Pk) withdrawMoney(amount) depositMoney(amount) © Prof. Dr. Björn Dreher Liste V – Enterprise JavaBeans 401 5 12. Session Facade 12.3 Lösung Vorteile Geringer Netzwerkverkehr Eine Schicht mehr durch Session Bean Aber fast nur lokaler Verkehr Bessere Concurrency Session Bean ist auch Transaktions-Fassade Transaktion auf Server-Seite beschränkt Geringe Kopplung Änderungen an Entity Beans werden durch Session Bean verborgen Gute Wiederverwendbarkeit Jeder Klient kann Logik in Session Bean benutzen © Prof. Dr. Björn Dreher Liste V – Enterprise JavaBeans 402 12. Session Facade 12.3 Lösung Vorteile (fortgesetzt) Gute Wartbarkeit Deklarative Transaktionssteuerung in Session Bean Auf Server-Seite beschränkt Saubere Architektur Session Bean realisiert die Geschäftslogik des Use Cases Entity Beans realisieren die Geschäftsobjekte „Verb-Noun Separation“ Session Bean – Entity Bean Für asynchrone Use Cases: Message Facade Pattern © Prof. Dr. Björn Dreher Liste V – Enterprise JavaBeans 403 6