Verteidigung Großer Beleg Enterprise JavaBeans und JavaBeans Sean Eikenberg
Gliederung Präsentation der Aufgabenstellung Wiederholung des Zwischenberichtergebnisses Architektur der Zwischenschicht Architektur des Generators Nachweis der Funktionstüchtigkeit (Zwischenschicht/Generator) Zusammenfassung/Ausblick auf EJB 2.0 Sean Eikenberg Verteidigung - Großer Beleg 2
Aufgabenstellung Zusammenhang zwischen EJB und JavaBeans ausarbeiten. Mögliche Vereinigung beider Technologien diskutieren. Entwurf einer Zwischenschicht, die die Integration von EJB innerhalb des JavaBeans-Komponentenmodells ermöglicht. Implementierung und Nachweis eines Zwischenschichtgenerators. Sean Eikenberg Verteidigung - Großer Beleg 3
Gliederung Präsentation der Aufgabenstellung Wiederholung des Zwischenberichtergebnisses Architektur der Zwischenschicht Architektur des Generators Nachweis der Funktionstüchtigkeit (Zwischenschicht/Generator) Zusammenfassung/Ausblick auf EJB 2.0 Sean Eikenberg Verteidigung - Großer Beleg 4
Abgrenzung: EJB - JavaBeans JavaBeans unterstützt keine Containerdienste (Sicherheit, Transaktionen, Verteilung). EJB unterstützt nicht freien Ressourcenzugriff, Ereignisverarbeitung oder visuelle Komponenten. Grundsätzlich verschiedene Komponentenschnittstellen. Fazit: EJB ist keine direkte Erweiterung von JavaBeans! Sean Eikenberg Verteidigung - Großer Beleg 5
Vereinigungsmodelle Vier Vereinigungsmodelle: EJB & visuelle Anwendungserstellung Integratives Komponentenmodell Übersetzte JavaBeans EJB-Adapter (früher: EJB-Proxies ) Ausgangsbasis für die Zwischenschicht ist das Modell EJB-Adapter Sean Eikenberg Verteidigung - Großer Beleg 6
EJB-Adapter Sean Eikenberg Verteidigung - Großer Beleg 7
Gliederung Präsentation der Aufgabenstellung Wiederholung des Zwischenberichtergebnisses Architektur der Zwischenschicht Architektur des Generators Nachweis der Funktionstüchtigkeit (Zwischenschicht/Generator) Zusammenfassung/Ausblick auf EJB 2.0 Sean Eikenberg Verteidigung - Großer Beleg 8
Anwendungsfälle: SessionEJBAdapter Sean Eikenberg Verteidigung - Großer Beleg 9
Einschub: Schnittstellenproblematik Abbildung von 2 EJB-Schnittstellen auf eine JavaBeans-Schnittstelle! Visuell gut nutzbare JavaBeans sind charakterisiert durch: properties parameterlose Methoden Einführung von: create-/find-properties, create-/find-type & parameterlose create()-, find()- und multifind()-methoden. Prinzip der Modellintegrität! Sean Eikenberg Verteidigung - Großer Beleg 10
Szenario: SessionEJBAdapter Sean Eikenberg Verteidigung - Großer Beleg 11
Szenario: SessionEJBAdapter Sean Eikenberg Verteidigung - Großer Beleg 12
Anwendungsfälle: EntityEJBAdapter Sean Eikenberg Verteidigung - Großer Beleg 13
Szenario: EntityEJBAdapter Sean Eikenberg Verteidigung - Großer Beleg 14
Szenario: EntityEJBAdapter Sean Eikenberg Verteidigung - Großer Beleg 15
Basis Architektur - Übersicht java.lang.object java.io.serializable AbstractEJBAdapter <<transient>> #initialcontext:javax.naming.initialcontext #createtype:int +AbstractEJBAdapter() #checkconnection():void +getejbmetadataadapter():ejbmetadataada +getejbobject():javax.ejb.ejbobject +isidentical(obj:abstractejbadapter):boolean +remove():void createtype:string environment:java.util.hashtable initctxfactory:string jndiname:string providerurl:string connected:boolean java.lang.object java.io.serializable EJBMetaDataAdapter -ejbmetadata:javax.ejb.ejbmetadata +EJBMetaDataAdapter(ejbMetaData:javax.ejb.EJBMetaD primarykeyclass:class session:boolean statelesssession:boolean java.lang.exception ConnectionFaultException Class "fires" PropertyChangeEvent for connected, createtype, initctxfactory, jndiname & providerur AbstractSessionEJBAdapter +AbstractSessionEJBAdapter() Class "fires" PropertyChangeEvent fo findtype, primarykey & removekey AbstractEntityEJBAdapter #created:boolean #findtype:int +AbstractEntityEJBAdapter() +create():void +dropconnection():void +find():void +multifind():java.util.collection +remove(primarykey:object):void +removebyremovekey():void findtype:string primarykey:object removekey:object java.lang.exception AsStringException Must be thrown by concrete EJB-Adapters which contain AsString-properties Sean Eikenberg Verteidigung - Großer Beleg 16
Basis Architektur (oben) Sean Eikenberg Verteidigung - Großer Beleg 17
Basis Architektur (unten) Sean Eikenberg Verteidigung - Großer Beleg 18
Beispiel: EJB-Adapter Sean Eikenberg Verteidigung - Großer Beleg 19
Gliederung Präsentation der Aufgabenstellung Wiederholung des Zwischenberichtergebnisses Architektur der Zwischenschicht Architektur des Generators Nachweis der Funktionstüchtigkeit (Zwischenschicht/Generator) Zusammenfassung/Ausblick auf EJB 2.0 Sean Eikenberg Verteidigung - Großer Beleg 20
Generatorprozess Sean Eikenberg Verteidigung - Großer Beleg 21
AbstractFactory-Muster Sean Eikenberg Verteidigung - Großer Beleg 22
Observer-Muster Sean Eikenberg Verteidigung - Großer Beleg 23
Modul-Klassen (Ausschnitt) Sean Eikenberg Verteidigung - Großer Beleg 24
Gliederung Präsentation der Aufgabenstellung Wiederholung des Zwischenberichtergebnisses Architektur der Zwischenschicht Architektur des Generators Nachweis der Funktionstüchtigkeit (Zwischenschicht/Generator) Zusammenfassung/Ausblick auf EJB 2.0 Sean Eikenberg Verteidigung - Großer Beleg 25
Nachweis der Funktionstüchtigkeit Nachweis erfolgt(e) in vier Schritten: Übereinstimmung manuell/automatisch generierter EJB-Adapter. Überprüfung der EJB-Adapter auf JavaBeans- Konformität (mittels BDK 1.1). Visuelle Anwendungserstellung mittels VisualAge for Java und EJB-Adapter. Prüfung einzelner Eigenschaften mit Hilfe einer EJB-Adapter-basierten Beispielanwendung. Sean Eikenberg Verteidigung - Großer Beleg 26
Gliederung Präsentation der Aufgabenstellung Wiederholung des Zwischenberichtergebnisses Architektur der Zwischenschicht Architektur des Generators Nachweis der Funktionstüchtigkeit (Zwischenschicht/Generator) Zusammenfassung/Ausblick auf EJB 2.0 Sean Eikenberg Verteidigung - Großer Beleg 27
Zusammenfassung Aufgabenstellung grundlegend erfüllt! Offene Punkte : Postulierte Modellintegrität bei Zugriffsschnittstellen als Rückgabetyp durchbrochen! Transaktionsattribut Mandatory ignoriert! Kein automatisches Verpacken in JAR- Archive! BeanInfo-Klasse wird ignoriert! Sean Eikenberg Verteidigung - Großer Beleg 28
Ausblick auf EJB 2.0 Einführung von EJB-QL. Einführung von Local Interfaces. Einführung von globalen Home-Interface - Methoden. Einführung von Entity-Relationships. Modifizierung der Container-Managed Persistence. Fazit: Anpassung nur in geringem Umfang notwendig! Sean Eikenberg Verteidigung - Großer Beleg 29
Diskussion Fragen? Anmerkungen? Verbesserungsvorschläge? sean.eikenberg@inf.tu-dresden.de Sean Eikenberg Verteidigung - Großer Beleg 30