J2EE-Praktikum. Enterprise JavaBeans Patterns. Peter Thiemann. J2EE-Praktikum, WS2005/2006. Universität Freiburg

Ähnliche Dokumente
5.2 Workshop EJB. Entwicklung von EJB-Anwendungen. Das JOnAS-System

J2EEKurs. Enterprise JavaBeans Einführung. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, Universität Freiburg, Germany

Enterprise Java Beans

Warum EJB Technologie (1)?

Zwischenbericht Großer Beleg

4.2 Workshop EJB. Entwicklung von EJB-Anwendungen

Enterprise Java Beans

11. Enterprise Java Beans Grundlagen der Programmierung II (Java)

Enterprise JavaBeans (mit JBoss)

Enterprise JavaBeans Überblick

Remote Method Invocation

Der lokale und verteilte Fall

Ausgemustert? Der Einfluss von EJB 3.0 auf J2EE Design Patterns. Java Forum Stuttgart, 5. Juli 2007 Stefan M. Heldt

Application Server Application Server: Motivation Application Server: Begriff

Geschäftskomponenten mit EJBs

Remote Method Invocation

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

7.1.5 Java RMI Remote Method Invocation ( (

Remote Method Invocation

Enterprise Java Beans (EJB)

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick

Enterprise JavaBeans

Enterprise JavaBeans Überblick: 12. Session Facade Einleitung 12.2 Problem 12.3 Lösung. Prof. Dr. Björn Dreher Liste V Enterprise JavaBeans 460

Softwareentwicklung mit Enterprise JAVA Beans

Enterprise JavaBeans Überblick

16 Migration von EJB 2.x nach 3.0

Anwendung eines Enterprise Java Beans

Geschäftskomponenten mit EJB 3.1

EJB jar.xml und Name Service (JNDI)

ORACLE Business Components for Java (BC4J) Marco Grawunder

6. Java Java Beans und Enterprise Java Beans

EJB 3.0 alles wird einfacher. Stephan Metzler, eurolink SWITZERLAND

Mobile und Verteilte Datenbanken

-Testen verteilter Anwendungen

Java RMI Remote Method Invocation

Ndo 3. Aufbruch zu neuen Ufern Migration bestehender J2EE Anwendungen. Jens Schumann

Enterprise JavaBeans Überblick

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Enterprise JavaBeans Überblick

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Programmieren II. Remote Method Invocation (RMI) Heusch -- Ratz. Institut für Angewandte Informatik

Enterprise JavaBeans Überblick: 8. Test-Driven Development. 8.1 Einleitung 8.2 Beispiel 8.3 Anwendung mit Eclipse und dem JBoss Application Server

Web-Services Implementierung mit Java

Session Beans & Servlet Integration. Ralf Gitzel

Enterprise JavaBeans Überblick

Komponentenorientierte Software-Entwicklung. Seite 1 / 44

Einführung: Verteilte Systeme - Remote Method Invocation -

Objektorientierte Datenbanken

Remote Methode Invocation (RMI) ETIS SS05

Mobile und Verteilte Datenbanken

Programmieren in Java

Oliver Paulus, 7. Februar Spring Framework Einführung. Oliver Paulus, Was ist Spring?

FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen. Sommersemester Michael Theis, Lehrbeauftragter 1

Technische Universität Dresden Prof. Hußmann Softwarekomponenten. 3.3 Enterprise JavaBeans-Technologie

Seite 1. Gliederung. Kapitel 3 Java-Komponenten-Technologien. Zweck der EJB-Technologie: Aufgabenteilung. 3.3 Enterprise JavaBeans-Technologie

DB-Aspekte des E-Commerce Schwerpunkt: Techniken. Servlets und JavaServer Pages

Java Remote Method Invocation (RMI)

Java Beans ( )

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e

1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI

Web 2.0 Software-Architekturen

Java Persistence API. Phillip Ghadir Oliver Tigges

typisiert, vom Compiler prüfbar, gute IDE-Unterstützung

Vorlesung Software aus Komponenten

Enterprise JavaBeans Überblick

Beispiel: JavaBeans. Enterprise JavaBeans: Server-Komponenten

Konzepte von Betriebssystem-Komponenten Middleware RMI

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Architekturen für verteilte Internetdienste

Einstieg in die Informatik mit Java

Richard Oates Thomas Langer Stefan Wille Torsten Lueckow Gerald Bachlmayr. Spring & Hibernate. Eine praxisbezogene Einführung HANSER

9. Remote Method Invocation Grundlagen der Programmierung II (Java)

D.97 D.98 D.100 D XDoclet (3) 11.1 XDoclet (2) 11.2 Exkurs: Java Annotations 12 EJB 3.0. Vorteile

EJB 3 - Erfahrungen aus der Praxis. Heiko W. Rupp

Programmieren in Java

Softwareentwicklung mit Enterprise JAVA Beans

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

Aspektorientierte Middleware Florian Wagner

Enterprise JavaBeans (EJB) - Grundlagen, Technologie und Anwendungen

Objektorientierte Softwareentwicklung

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am

Komponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

5. Übung zu Software Engineering

Enterprise JavaBeans Überblick: 9. Architektur der Web-Schicht. 9.1 Einleitung 9.2 Front-Controller Servlet 9.3 Java Server Pages 9.

Algorithmen und Programmierung III

Verteidigung Bakkalaureatsarbeit

Kapitel 8: Serialisierbarkeit

Transkript:

J2EE-Praktikum Enterprise JavaBeans Patterns Peter Thiemann Universität Freiburg J2EE-Praktikum, WS2005/2006

Inhalt 1 Designmuster Sitzungsfassade Wertobjekte 2 Implementierungsmuster Geschäftsinterfaces Exceptions Primärschlüssel Große Anfragen

Sitzungsfassade Problem Client hängt direkt von (Entity) Bean Methoden ab Viele externe Zugriffe über Remote Interfaces Client First RemoteHome FirstRemote Second RemoteHome SecondRemote findbyprimarykey() create() method1() method2() method3()

Sitzungsfassade Lösung Einführen einer Sitzungsfassade (session facade) Implementiert durch stateless Session-Bean Externe Zugriffe interne Zugriffe über Local Interfaces Client Session Facade First LocalHome FirstLocal Second LocalHome SecondLocal businessmethod() findbyprimarykey() create() method1() method2() method3()

Sitzungsfassade Diskussion Vereinfachung des Client-Code durch Kapselung eines Geschäftsablaufs Methode im Session-Bean läuft innerhalb einer Transaktion Vermeidung von Remote-Zugriffen (teuer) Vgl. Fassade Designmuster

Wertobjekte Problem Jeder Zugriff auf ein Remote-Interface entspricht einer Remote-Method-Invocation Jede Verwendung von RMI hat Overhead (Netzwerk, Serialisierung) Zugriff auf Komponenten eines Entity-Bean zu teuer Client Bean RemoteHome BeanRemote findbyprimarykey() getfirstname() getlastname() getbirthday()

Wertobjekte Lösung Definition von Wertobjekten: (dependent) value objects Ein Wertobjekt fasst mehrere Komponenten (eines Entity-Bean) zusammen Wertobjekte müssen serialisierbar sein, da sie im Remote-Interface verwendet werden Wertobjekte sind schreibgeschützt, da Änderungen an ihnen nicht persistent sind Client Bean RemoteHome BeanRemote findbyprimarykey() getvalueobject()

Wertobjekte Beispiel public class PersonDO implements java. i o. S e r i a l i z a b l e { private S t r i n g firstname ; private S t r i n g lastname ; private java. u t i l. Date b i r t h d a y ; public PersonDO ( S t r i n g firstname, S t r i n g lastname, java. u t i l. Date b i r t h d a y ) { this. firstname = firstname ; this. lastname = lastname ; this. b i r t h d a y = b i r t h d a y ; public S t r i n g getfirstname ( ) { return this. firstname ; public S t r i n g getlastname ( ) { return this. lastname ; public java. u t i l. Date g e t B i r t h d a y ( ) { return this. b i r t h d a y ;

Wertobjekte Anwendungen/Diskussion Beschleunigung des Remote-Zugriffs auf Entity-Beans (Remote) Datenübermittlung an Session-Beans (Allgemein sollten Remote-Aufrufe möglichst viele Daten auf einmal transportieren) Anstelle eines Entity-Beans, z.b. als Information, die extern veröffentlicht werden soll Beispiel: Buchungsbestätigung Dürfen als Typ von CMP-Feldern verwendet werden Nicht empfehlenswert, da Speicherung in der Datenbank in serialisierter Form Entkopplung von internem Persistenzmodell und Client-Code Unterschiedliche Wertobjekte für verschiedene Sichten auf gleiches Entity-Beans

Geschäftsinterfaces Problem Die Bean-Klasse implementiert nicht das Interface des Beans. Inkonsistenzen werden erst beim Deployment bemerkt. Lösungsansatz: Definition eines Geschäftsinterface Definiert die Geschäftsmethoden des Beans Die Bean-Interfaces und die Bean-Klasse erben vom Geschäftsinterface Inkonsistenzen werden beim Compilieren bemerkt. Nur zu diesem Zweck verwenden!

Geschäftsinterfaces Beispiel / / business i n t e r f a c e import java. rmi. RemoteException ; public interface OrderBI { public i n t getquantity ( ) throws RemoteException ; public void s e t Q u a n t i t y ( i n t q ) throws RemoteException ; public double getpriceperitem ( ) throws RemoteException ; public void setpriceperitem ( double p ) throws RemoteException ; public double g e t T o t a l P r i c e ( ) throws RemoteException ; / / remote i n t e r f a c e import javax. ejb. EJBObject ; public interface OrderRemote extends Order, EJBObject {

Geschäftsinterfaces Beispiel/2 / / bean class public class OrderBean implements Order, EntityBean { private i n t q u a n t i t y ; private double priceperitem ; public i n t getquantity ( ) { return q u a n t i t y ; public void s e t Q u a n t i t y ( i n t q ) { q u a n t i t y = q ; public double getpriceperitem ( ) { return priceperitem ; public void setpriceperitem ( i n t p ) { priceperitem = p ; public double g e t T o t a l P r i c e ( ) { return q u a n t i t y priceperitem ; / / f u r t h e r e n t i t y bean methods

Exceptions RemoteException Methoden von Remote-Interfaces Netzwerkprobleme Abgefangen durch Clienten-Code EJBException Ausgelöst in der EJB-Implementierung (Bean-Klasse) bei schwerwiegenden Problemen Abgefangen durch EJB-Container, nicht durch Entwickler Rollback der aktuellen Transaktion Exceptions der Anwendung Spezielle Ergebnisse von Methodenaufrufen Werden an die Anwendung weitergereicht

Primärschlüssel Primärschlüssel dürfen aus mehreren CMP-Feldern zusammengesetzt werden Separate Schlüsselklasse muss definiert werden Kann Performanceprobleme ergeben: aus Schlüssel muss hashcode() berechnet werden Verwendung als Fremdschlüssel Allgemeine Empfehlungen ein CMP-Feld als Primärschlüssel möglichst mit einfachem Typ darf sich nie ändern (dient als Identifikation eines Tupels) oft systemgenerierter Surrogatschlüssel

Große Anfragen Aufgabe: Naives Anzeigen einer Bücherliste Finder-Methode liefert eine Collection von Entity-Beans Hole Daten durch Abfragen von Wertobjekten Problem: Sehr ineffizient Lösungsvorschlag Umgehen von Entity-Beans Direkte Anfrage an die Datenbank (nur lesend!) Ergebnis: Liste von Wertobjekten Gekapselt in Session-Bean