Spring Dynamic Modules for OSGi Service Platforms



Ähnliche Dokumente
Spring Dynamic Modules for OSGi Service Platforms

Mit OSGi Webanwendungen entwickeln Was geht, was nicht?

Gerd Wütherich Nils Hartmann. OSGi Service Platform by example

Gerd Wütherich Martin Lippert. OSGi Service Platform by example

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Spring & OSGi: Plattform der Zukunft. Bernd Kolb (Kolbware) Martin Lippert (akquinet agile GmbH) Gerd Wütherich (comdirect bank AG)

Das Interceptor Muster

Die OSGi Service Plattform

OSGi. The Next Generation Java Service Platform. SOA - The Java Way or My classpath is killing me. Michael Greifeneder

OSGi: Anwendungsszenarien, Auswahlkriterien und Ausblick

Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern

OSGi-basierte Webapplikationen Ein Erfahrungsbericht

Java Entwicklung für Embedded Devices Best & Worst Practices!

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

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

NetMan Desktop Manager Vorbereitung und Konfiguration des Terminalservers

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

SpringSource Enterprise & Application Platform: Wo geht die Reise hin?

Der lokale und verteilte Fall

Eignet sich Eclipse RCP als Enterprise Plattform? 2. Mai 2006 Lars Stucki & Edwin Steiner

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Anwendungen zur Raumautomation auf Basis der OSGi- und LON-Technologie

Architektur des agimatec-validation Frameworks

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

CADEMIA: Einrichtung Ihres Computers unter Mac OS X

WinVetpro im Betriebsmodus Laptop

AutoCAD Dienstprogramm zur Lizenzübertragung

WebService in Java SE und EE

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

ADDISON Aktenlösung Automatischer Rewe-Import. Technische Beschreibung

Installation OMNIKEY 3121 USB

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Übersicht. Eclipse Foundation. Eclipse Plugins & Projects. Eclipse Ganymede Simultaneous Release. Web Tools Platform Projekt. WSDL Editor.

Dynamische Plug-ins mit Eclipse 3. Martin Lippert Tammo Freese

FastViewer v3 bei der TechniData IT-Service GmbH

KeyGateway incadea.engine DMS KeyReport Schlüsselmanagement auf höchstem Niveau

UMSTELLUNG DER RÖNTGEN-SCHNITTSTELLE DÜRR-DBSWIN AUF DÜRR-VDDS

SUB-ID- VERWALTUNG MIT GPP SETUP-GUIDE FÜR PUBLISHER

Computeranwendung und Programmierung (CuP)

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Die Backup-Voreinstellungen finden Sie in M-System Server unter dem Reiter "Wartung".

Software Release Notes

Anforderungen an die HIS

Etablierung serviceorientierter Architekturen mit Web Services

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

Arbeiten mit UMLed und Delphi

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Update / Inbetriebnahme domovea Server. Update/Inbetriebnahme domovea Server Technische Änderungen vorbehalten

Windows Vista Security

MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?!

Einleitung. Funktion. Panzenböck Phillipp. Download Installation. Testen. Konfiguration

Version White Paper ZS-TimeCalculation und die Zusammenarbeit mit dem iphone, ipad bzw. ipod Touch

[DvBROWSER] Offline-Viewer für [DvARCHIV] und [DvARCHIVpersonal] Version 2.2

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Step by Step Webserver unter Windows Server von Christian Bartl

ECO-Manager - Funktionsbeschreibung

Eclipse, Spring und OSGi 1

Übung - Konfigurieren einer Windows 7-Firewall

EPO Consulting GmbH. Ihr Partner für HTML5 und SAP UI5 Apps. Stand 2015/04. EPO Consulting GmbH - 1 -

Effiziente Administration Ihrer Netzwerkumgebung

3 Installation von Exchange

Fachapplikationen in heterogenen IT Landschaften

Funktionserweiterungen, behobene Funktionseinschränkungen und Funktionseinschränkungen, EASY Starter V1.5

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

euz Zusammenführung der Anwendungen Ursprungszeugnis IHK Gesellschaft für Informationsverarbeitung mbh Hörder Hafenstr Dortmund Version 1.

Was ist das Tekla Warehouse

MOC 10324A: Implementierung und Administration der Microsoft Desktop-Virtualisierung

teamsync Kurzanleitung

Installation der SAS Foundation Software auf Windows

Fujitsu BeanConnect TM V3.0 Software 0 FUJITSU LIMITED 2013

Synchronisations- Assistent

ATHOS Benutzertreffen

News RSS-Export. mit tt_news und pmk_rssnewsexport. Alexander Mürb, Arthur Palmer TYPO3 User Group Stuttgart

Xampp-Installation und Konfiguration. Stefan Maihack Dipl. Ing. (FH) Datum:

Themen. Web Service - Clients. Kommunikation zw. Web Services

Workshop Java Webentwicklung Tapestry. Ulrich Stärk

Implementierung Smartcard Aladdin E-Token pro für Domänen-Anmeldung. USB Smart Card Reader und USB Token der Fa. Aladdin (E-Token Pro)

Multimedia im Netz. Wintersemester 2011/12. Übung 10. Betreuer: Verantwortlicher Professor: Sebastian Löhmann. Prof. Dr.

ICT-Cloud.com XenApp 6.5 Configuration Teil 2

Application Frameworks

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

Formular»Fragenkatalog BIM-Server«

Thermoguard. Thermoguard CIM Custom Integration Module Version 2.70

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Gezieltes Kontakt- und Kundenmanagement. Die Software für Ihren Erfolg 2,8 Millionen Anwender weltweit! Installationsleitfaden

Erfahrungen mit Hartz IV- Empfängern

Inhaltsverzeichnis. TeiM. V E E.l E.2 E.3 E.4. Vorwort von Stefan Tilkov Einleitung Zielgruppe Über dieses Buch Konventionen Dank

Inhalt. 1 Übersicht. 2 Anwendungsbeispiele. 3 Einsatzgebiete. 4 Systemanforderungen. 5 Lizenzierung. 6 Installation.

Elektronische Zustellung WKO / AustriaPro. Status Arbeitspakete PL.O.T

Konfiguration eines Mac PCs für Notation Software Produkte mit WineHQ

Anleitung für die Einrichtung weiterer Endgeräte in 4SELLERS SalesControl

Virtueller Campus. Virtueller Campus Horw mit interaktiver Steuerung. HowTo: Externe Bibliotheken

Nutzung von GiS BasePac 8 im Netzwerk

Transkript:

Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox

Agenda OSGi Technologie: OSGi Technologie im Überblick Ein praktisches Beispiel Spring Dynamic Modules: Spring Dynamic Modules im Überblick Ein praktisches Beispiel Web Support: Web Support im Überblick Ein praktisches Beispiel

OSG was? Die OSGi Service Platform: Java basierte Software Plattform, die dynamische Integration und (Fern ) Management von Modulen (Bundles) und Diensten (Services) ermöglicht. A dynamic module system for Java Besteht aus: OSGi Framework (Container für Bundles und Services) OSGi Standard Services (verschiedene, horizontale Dienste)

Woher kommt OSGi Service Platform? OSGi Alliance: http://www.osgi.org/ Wird seit 1999 mit Fokus auf Leichtgewichtigkeit und Dynamik entwickelt: Ursprünglich für Embedded Systeme Inzwischen verbreitet für Server und Client Systeme

Wo wird OSGi Service Platform heute verwendet? Die Eclipse Plattform Eclipse SDK (IDEs), Server Side Eclipse, ercp, IBM Websphere App Server 6.1 (basiert auf OSGi) Lotus (basiert auf Eclipse RCP, damit auch OSGi) Jazz (basiert auf Server Side Eclipse) BEA/Oracle, Adobe, JBoss prototypt OSGi Umstellung...

Das OSGi Framework: Überblick Kern der OSGi Service Platform Ermöglicht die Installation und Administration von Bundles und Services Verwaltet (Klassen )Abhängigkeiten zwischen Bundles Kann von außen administriert werden

Das OSGi Framework: Bundles Das Framework erlaubt die Definition von Modulen (genannt Bundles ), Sichtbarkeiten von Modul Bestandteilen (public API vs. private API) Abhängigkeiten zwischen Modulen, sowie Versionen von Modulen.

Das OSGi Framework: Lebenszyklus von Bundles Das OSGi Framework ist dynamisch: Bundles können dynamisch zur Laufzeit installiert, gestartet, gestoppt, deinstalliert und aktualisiert werden. Bei Start und Stopp können Bundles über den Bundle Activator Code ausführen.

Das OSGi Framework: Services Das OSGi Framework ist service orientiert: Services können zur Laufzeit über die Service Registry veröffentlichen und wieder entfernen Bundles können über die Service Registry Services finden und verwenden

Das OSGi Framework: Management Agents I Management Agents ermöglichen die Administration eines OSGi Frameworks. Breites Spektrum verfügbar: Kommandobasierte Konsole (Equinox Konsole) Grafisch interaktive Anwendungen (Knopflerfish Desktop, Prosyst mconsole) Web basierte Oberfläche (Knopflerfish Web Konsole) Nicht standardisiert, aber Zugriff auf das Framework über definierte Schnittstellen.

Das OSGi Framework: Management Agents II Eclipse Equinox Konsole Prosyst mconsole Knopferfish Desktop

Implementierungen der OSGi Service Platform Open Source Implementierungen: Eclipse Equinox (http://www.eclipse.org/equinox/) Apache Felix (http://felix.apache.org/) Knopflerfish (http://www.knopflerfish.org/) ProSyst mbedded Server Equinox Edition (http://www.prosyst.com/products/osgi_se_equi_ed.html) Kommerzielle Implementierungen: ProSyst (http://www.prosyst.com/) Knopflerfish Pro (http://www.gatespacetelematics.com/) (kein Anspruch auf Vollständigkeit)

Die OSGi Service Platform: Ein Beispiel Der OrderService ermöglicht die Order von Aktien für einen Kunden ist Remote über RMI verfügbar Der CustomerService liefert dem OrderService die passenden Kundendaten

Zwischenbilanz OSGi Service Platform ermöglicht Modularisierung von Anwendungen. Module können zur Laufzeit installiert, gestartet, gestoppt, deinstalliert werden. Aber: Abhängigkeit zu OSGi Framework Bibliotheken Services müssen programmtisch verwaltet werden Keine Unterstützung für Enterprise Technologien

Spring Dynamic Modules for OSGi Service Platforms Formerly known as Spring OSGi Mitglied der Spring Familie http://www.springframework.org/osgi Keine eigene OSGi Framework Implementierung, sondern eine Brücke zwischen Spring und OSGi Framework Erlaubt es, Spring Anwendungen auf Basis von OSGi zu implementieren Ist kompatibel zu Equinox, Felix und Knopflerfish 15

Das Ziel Die Möglichkeiten von OSGi nutzen! Modularisierung inkl. Dependency Management Sichtbarkeits Definitionen Versions Management Dynamic Management 16

Randbedingungen Komplexität Darf nicht erhöht werden, weiterhin POJO Programmiermodell OSGi Service Modell integrieren OSGi Services als Beans und umgekehrt Testing muss auch außerhalb eines OSGi Containers möglich sein Möglichst keine Abhängigkeiten zu OSGi APIs Alle Enterprise Features von Spring müssen weiterhin nutzbar sein 17

Das Spring OSGi Modell Spring selbst steht in Form von Bundles zur Verfügung 18

Bundles und Spring Ein Application Context pro Bundle: Spring DM erzeugt und zerstört den Application Context automatisch, wenn das Bundle aktiviert bzw. deaktiviert wird Definition über XML Dateien unterhalb von META INF/spring oder die im Bundle Manifest Header Spring-Context definiert sind 19

Hintergrund: Spring Extender Bundles Ein Extender Bundle erweitert andere Bundles um spezifische Funktionalität reagiert auf Zustandsänderungen von Bundles (hier: start / stop) führt abhängig von bestimmten Eigenschaften eines Bundles zusätzliche Aktionen aus Extender in Spring DM: org.springframework.osgi.bundle.extender: Ist für das Erzeugen und die Verwaltung des Application Context pro Bundle verantwortlich org.springframework.bundle.osgi.web.extender: Ist für das Deployment von Web Application Bundles in Spring DM verantwortlich

Beans als OSGi Services (1) Spring Beans können als OSGi Services exportiert werden OSGi Service sind bundle übergreifend sichtbar <beans> <bean name="customerservice" class="com.wuetherich.osgi.customerservice.impl.customerserviceimpl"/> <osgi:service id="customerserviceosgi" ref="customerservice" interface="com.wuetherich.osgi.customerservice.customerservice"/> </beans> 21

Beans als OSGi Services (2) Mögliche Element Attribute für <osgi:service>: Attributname interface ref context class loader auto export ranking Mögliche Werte qualifizierter Klassenname Bean Name unmanaged / service provider disabled / interfaces /class hierarchy / all classes Integer Wert OSGi Service sind Beans (= Objektreferenz auf die Bean) Ausnahme: Setzen des Context Class Loaders wird über Proxy realisiert! 22

OSGi Services als Beans (1) Existierende OSGi Services können als Beans in einen Application Context integriert werden <beans> <osgi:reference id="customerserviceosgi" interface="com.wuetherich.osgi.customerservice.customerservice"/> <bean id="orderservice" class="com.wuetherich.osgi.orderservice.internal.orderserviceimpl"> <property name="customerservice"> <ref local="customerserviceosgi"/> </property> </bean> </beans> 23

OSGi Services als Beans (2) Mögliche Element Attribute für <osgi:reference>: Attributname Mögliche Werte interface qualifizierter Klassenname filter OSGi Filter Ausdruck bean name String context class loader client / service provider / unmanaged cardinality 0..1 / 1..1 timeout Long (positiv) 24

OSGi Services als Beans (3) Importierte Services sind Proxies: Die definierte <osgi:reference> Bean bleibt während der Lebenszeit des Kontextes unverändert. Der zugrundeliegende Service kann kommen und gehen. Verwendung von (Service) Listenern: Änderungen am zugrundeliegende Service nicht unmittelbar sichtbar Reaktion auf Änderungen über Definition eines Listener möglich <osgi:reference id=" " interface=" "> <osgi:listener bind-method="bind" unbind-method="unbind" ref=" "/> </osgi:reference> 25

Weitere Möglichkeiten <osgi:list>, <osgi:set> Ermöglicht das Arbeiten mit Mengen von Services Dynamischer Iterator greedy proxying <osgi:bundle> Stellt ein Bundle Objekt als Bean bereit <osgix:property placeholder> Ermöglicht das Verwenden von Konfigurationen des Configuration Admin Service Annotation Support 26

Spring DM: Ein praktisches Beispiel 27

Resultat Keine OSGi API nötig (ganz im Spring Sinne) Bean Sichtbarkeiten zwischen Bundles können definiert werden nur was für andere Bundles sichtbar sein soll, wird als OSGi Service exportiert Dependency Injection über Bundle Grenzen hinweg 28

Spring DM Web Unterstützung Fokus in Spring DM 1.1 Integration von Spring DM mit der vorhandenen Spring Web Unterstützung Web Anwendungen in OSGi Generell unterschiedliche Deployment Szenarien möglich

OSGi basierte Web Anwendungen 1 Szenario 1: OSGi Framework innerhalb einer Web Anwendung OSGi Framework wird innerhalb einer Web Anwendung ausgeführt Anwendungs Bundles können über das OSGi Framework in der Web Anwendung installiert und gestartet werden

OSGi basierte Web Anwendungen 2 Szenario 2: Web Container eingebettet in OSGi Framework Web Container wird innerhalb des OSGi Frameworks als Bundle installiert und gestartet Anwendungs Bundles können Web Anwendungen programmatisch deployen

Web Unterstützung in Spring DM Web Anwendungen werden als Bundles in OSGi Framework installiert und gestartet ( bundle fiziertes WAR) Spring DM Web Extender installiert die Web Anwendung im Web Container, wenn das WAR Bundle gestartet wird Native Unterstützung verschiedener Web Container Volle Unterstützung des OSGi Class Loadings

Web Anwendungen als Bundles Reguläre WAR Dateien Zusätzlich: Bundle Manifest Spring Anbindung über OsgiBundleXmlWebApplication-Context und ContextLoaderListener Spezifikation erfolgt in der Datei web.xml: <context-param> <param-name>contextclass</param-name> <param-value>org.springframework.osgi.web.context. support.osgibundlexmlwebapplicationcontext</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.contextloaderlistener </listener-class> </listener>

Spring DM Web in Action: Ein praktisches Beispiel

Ausblick Weitere Informationen: http://www.springframework.org/osgi http://groups.google.com/group/spring osgi http://www.springframework.org/osgi/specification Spring OSGi Vortrag http://www.eclipsecon.org/2008/?page=sub/&id=495 35

Die OSGi Service Platform Eine Einführung mit Eclipse Equinox Detaillierte Einführung in OSGi Technologie April 2008, dpunkt.verlag ISBN 978-3-89864-457-0 Ab sofort erhältlich

Vielen Dank!!! für die Aufmerksamkeit Fragen jederzeit gerne gerd@gerd wuetherich.de 37