Projektgruppe Thomas Kühne Komponentenbasiertes Software Engineering mit OSGi
Anforderungen der PG IDSE an ein Komponenten- Client Nativer Client Web Client Alternativen IDSE Nutzer Szenario Pipe IDSE Service Plattform B Dokument Speicherung Ergebnis Darstellung Re-Use Service Datenbank Automatische Benachrichtigung Datenbank Automatische Benachrichtigung Service Plattform B Service Plattform C
Warum ist die Implementierung allein mit Java OO nicht sinnvoll? Re-Use Alternativen Pipe.jar Class-Path Verweis versteckt ModelGen.jar.jar Interface Verweise ModelGen.jar
Warum ist die Implementierung allein mit Java OO nicht sinnvoll? Re-Use Alternativen Pipe.jar Klasse M Package B! Klasse N Class-Path Verweis import import ModelGen.jar Package A Public Klasse X import Package B Protected Klasse Y
Warum ist die Implementierung allein mit Java OO nicht sinnvoll? Service Re-Use Alternativen Pipe ModelGen.jar.jar Version 1?.jar Class-Path Verweis: ModelGen.jar Version 2 Benötigte Version ist nicht spezifizierbar!
Warum ist die Implementierung allein mit Java OO nicht sinnvoll?
Warum ist die Implementierung allein mit Java OO nicht sinnvoll?
Features eines Komponenten s Composition Required Interfaces: interfaces, data types, behavior Variante A Variante B Instantiation Provided Interfaces: interfaces, data types, behavior Interaction Development Assembly Execution
Komponenten-Standards und Technologien Standard Implementierung OSGi Equinox, Felix, Knoplerfish Spring DM, (JbossOSGi),.. EJB (JEE) JBoss, Glassfish.. Plattform Eclipse, JBoss Glassfish,.. JBoss, Glassfish,.. Implementierte Komponenten IDSE Service Plattform
Open Services Gateway Initiative (Heute: OSGi Alliance) OSGi Bundle Server OSGi Bundle Küche OSGi Bundle TV Auto
Das Industrie-Konsortium hinter OSGi Sun Oracle IBM OSGi Alliance NTT Deutsche Telekom
Was ist OSGi? Import Interfaces ModelImporterInterface OSGi Bundle.jar.mf (Manifest) Interface Export Interfaces Version 1.2 class Service
Wie funktioniert OSGi? OSGi Service Plattform (z.b. Jboss, Glassfish, Eclipse) Infrastruktur Bundles Persistence Bundle Bundle Applikations Bundles Model Gen. Bundle Instanziierung OSGi Container (z.b. Felix, Equinox) Persistence Bundle Bundle Service Model Gen. Bundle Service registrieren OSGi Service Registry Verbindungen zur Laufzeit dezentral durch die Komponenten kontrolliert Required Interfaces Provided Interfaces
OSGi, Felix und Glassfish in Aktion Live Demo
Welche Szenarien sind mit OSGi realisierbar? OSGi unterstützt nur Singleton-Servies und hat keine Frontend API Kein ORM für DB Zugriff Pipe Client Nativer Client Web Client IDSE Service Plattform Alternativen B OSGi im Enterprise Bereich noch sehr neu OSGi erzeugt hohen Code- Overhead Dokument Speicherung Ergebnis Darstellung Mit R-OSGi Bundle Re-Use Service Datenbank Automatische Benachrichtigung Datenbank Automatische Benachrichtigung Service Plattform B Service Plattform C
Was sind EJBs? Stateless Session Beans Stateful Session Beans IDSE.ear.jar @Stateless class ModelGen.jar @Stateful class class ModelGenerator class Service Service Interface Local/Remote Interfaces ModelGen. Int. + Entity Beans für Datenhaltung!
Wie funktionieren EJBs zur Laufzeit JEE Service Plattform (z.b. Jboss, Glassfish) Deployed ear files IDSE.ear.jar @Stateless ModelGen.jar @Stateful ModelGenerator EJB Container (z.b. Jboss, Glassfish) Instanz Anaylse.ear JNDI (JEE Service Registry) ModelGenerator Instanz 1 ModelGenerator Instanz 2 Verbindungen zur Laufzeit per Dependency Injection zentral durch den EJB Container kontrolliert Required Interfaces Provided Interfaces
Welche Szenarien sind mit EJBs (JEE) realisierbar? Client Web Client Nativer Client Intransparent Intransparent Pipe IDSE Service Plattform Alternativen B EJBs lösen die meisten OO- Probleme nicht Unterstützt Dependency Injection Dokument Speicherung Keine Versionierung Ergebnis Darstellung Keine Versionierung Re-Use Service Datenbank Automatische Benachrichtigung Datenbank Automatische Benachrichtigung Service Plattform B Service Plattform C
OSGi mit JEE ( OS-JEE-I )
Wie funktioniert OSGi mit JEE? OSGi Service Plattform (Glassfish) EARs Web Client EAR OSGi Bundles Bundle J2EE Container (z.b. JBoss,..) OSGi Container (z.b. Felix, Equinox) Web Client EAR Bundle Service J2EE Service Registry OSGi Service Registry Verbindungen zur Laufzeit per Dependency Injection zentral durch den EJB Container kontrolliert Required Interfaces Provided Interfaces
Welche Szenarien sind mit OSGi + EJB (JEE) realisierbar? Client Anbindung über EJBs(JEE) Dokument Web Client ORM (z.b. Hibernate) Nativer funktioniert nicht Client ohne Alternativen weiteres im OSGi-Context IDSE Service Plattform Pipe Speicherung Re-Use Client B Architektur nicht erprobt! Integration Tests problematisch Transparenz durch explizite Abhängigkeiten Ergebnis Darstellung Dependency- Injection der EJBs reduziert den Code Service Overhead Datenbank Automatische Benachrichtigung Datenbank Automatische Benachrichtigung Service Plattform B Service Plattform C
Fragen