17.09.2009 Aurich – Jonas Jacobi OSGi Tutorial. 17.09.2009 Aurich – Jonas Jacobi Das OSGi Service Framework Dynamisches Modulsystem für Java Dynamische.

Slides:



Advertisements
Ähnliche Präsentationen
Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
Advertisements

E-Commerce Shop System
Sichere Anbindung kleiner Netze ans Internet
Eclipse.
Modellgetriebene Softwareentwicklung
Systemverwaltung wie es Ihnen gefällt.
© 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.
1 Allgemeine Fragestellung Suche nach wissenschaftlicher Information im Internet Quelle wird gefunden, aber… …Zugang nur gegen Passwort oder Zahlung Wiss.
Übung 5 Mehrstufige Client/Server-Systeme mit Enterprise Java Beans
Objektorientierte Programmierung
Erweiterung B2B Usermanagement / LDAP-Anbindung
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Java 2 Enterprise Edition (J2EE)
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Java: Grundlagen der Sprache
ATHOS Benutzertreffen 12. November Auswerteserver Glashütten, 12. November 2008 HighQSoft GmbH, Andreas Hofmann
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung X1 Sitzung X1: Packages & Wiederholung.
Information und Technik Nordrhein-Westfalen Single Sign On mit CAS Düsseldorf, Single Sign On für Webanwendungen am Beispiel von CAS.
Information und Technik Nordrhein-Westfalen Das personalisierte Portal Düsseldorf, Das personalisierte Portal.
Hassan Bidani Jallal Alami Rahmouni FH Wiesbaden
Tomcat (I) Ende 1999 Jakarta-Projekt von Apache, IBM und Sun gegründet
Das Build-Tool ANT ETIS SS05. ETIS SS05 - Nadine FröhlichANT 2 Gliederung Motivation Build - Datei –Allgemeiner Aufbau –Project –Target –Task –Properties.
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Eclipse - Entwicklungsumgebung und mehr ETIS SS05.
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
JAVA RMI.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Smalltalk für Quereinsteiger
PHP Pakete und Beispiele Webengineering Robert Lemke.
M A P K I T Management eines J2EE basierten eCommerce Systems am Beispiel des ATG Dynamo Applikationsservers und BMC Patrol als Managementframework.
UML Begleitdokumentation des Projekts
OGSI und Jini im Focus Sebastian Albrecht. 2 Gliederung OGSI Einordnung neue Komponenten Zukunft Jini Entstehung Architektur Lookup Service Bewertung.
Divide and Conquer Eclipse RCP und Spring in verteilten Anwendungen Stefan Reichert | Lufthansa Systems Benjamin Pasero | IBM Rational.
LDAP Migration (Stand und Ausblick) Torsten Gosch CIS.
Space Based Computing VU SS08
Open Services Gateway Initiative
Entwicklung verteilter eingebetteter Systeme - Einführung
08. September 2010Entwicklungsstrategien in Liferay 1 Christian Krause, URZ FSU Jena, IDM-Arbeitsgruppe.
Service components and distribution with OSGi Seminar: Multimedia- und Internetsysteme Paul Hübner | Bildquellen : [1]
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Aichinger Christian, Strasser Jürgen. Inhalt JSF EJB Praxis - Integration.
Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen.
Reiner Ganser Solution Architect 1stQuad Solutions GmbH Presentation Subtitle.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Sesame Florian Mayrhuber
Spring Framework.
Management- und Web Services- Architekturen
EPROG Tutorium #6 Philipp Effenberger
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
C O R P O R A T E T E C H N O L O G Y Software & Engineering Architecture Eclipse Rich Client Platform Siemens Workshop Kai Tödter Siemens AG CT SE 2.
Service components and distribution with OSGi Seminar: Multimedia- und Internetsysteme Paul Hübner |
Plugin Design Patterns in
Untersuchungen zur Erstellung eines
Reinhold Rumberger Web Services.
Enhydra Shark Workflow-Management Frank Aurich Markus Reisch.
17. Januar 2006 Navigations- und Ortungssysteme Handy-Kompass Peter Ammon Michael Kaiser Thomas Zsebedits.
1 Einführung TOMCAT Entwicklung Technischer Informationssysteme SS 2003 Florian Müller.
Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.
J2EE-Motivation(I) Anforderungen an heutige Software u.a.:
JAVA Sound. Stellt low-level Routinen zur Soundverarbeitung bereit media/sound/index.jsp Java Sound:
IT-Dienstleistungen E-Learning Systeme Content Management 1 Fallbeispiel ILIAS: Das Repository-Objekt-Plugin „Centra“
Forms 9i - New FeaturesSeite 1 Forms 9i New Features Gerd Volberg OPITZ CONSULTING GmbH.
1 Simulation einer Ladesäule für Elektrofahrzeuge nach dem Open Charge Point Protocol Felix Batke 3. Lehrjahr.
Oracle ADF FacesSeite 1 Oracle ADF Faces OPITZ CONSULTING Oracles Implementierung der JavaServer Faces Spezifikation.
Source Talk Tage 2008 NetBeans Rich Client Platform NetBeans RCP NetBeans Rich Client Platform Anton Epple Göttingen, Source Talk Tage.
 Präsentation transkript:

Aurich – Jonas Jacobi OSGi Tutorial

Aurich – Jonas Jacobi Das OSGi Service Framework Dynamisches Modulsystem für Java Dynamische Integration und Fernmanagement von Softwarekomponenten (Bundles) Services Verfügbarkeit, Skalierbarkeit, Security Eingebettete Systeme bis Enterprise Applications Grundlage u.a. von Eclipse OSGi Alliance Bis 2004 Open Service Gateway Initiative IBM, Oracle, Sun, Nokia, … Verschiedene Implementierungen Equinox, Felix, Knopflerfish, … 2

Aurich – Jonas Jacobi Das OSGi Service Framework Container für Applikationen und Services Applikationen teilen sich eine Java VM Applikationsmanagement Life Cycle, Java Pakete, Security, Abhängigkeiten Service Registry Benachrichtigungen über Veränderungen Bundles Services 3 Java VM OSGi Service Framework System-Bundles (OSGi) Support –Bundles (OSGi-Plattform z.B. Equinox) Applikations- Bundles (Benutzerdefiniert)

Aurich – Jonas Jacobi OSGi Bundles OSGi Verpackung für Applikation Bibliothek Beliebige Ressourcen Dynamischer Lebenszyklus 4 Installed Resolved StartingActive Stopping Uninstalled Install Uninstall Stop Start Uninstall Automatisch explizit

Aurich – Jonas Jacobi OSGi Bundle Interna Normale JAR-Datei Erweiterte Manifest-Datei META-INF/MANIFEST.MF Beschreibt das Bundle Name, Version, … Definiert Abhängigkeiten Java-Packages Andere Bundles Definiert Package-Exporte Activator zur Initialisierung/Shutdown (Optional) Normale Java Klasse In der Manifest-Datei definiert Kann Services bereitstellen 5

Aurich – Jonas Jacobi Hands-On (Teil 1) OSGi Bundles 6

Aurich – Jonas Jacobi Zusammenspiel von Bundles Das OSGi Framework verwaltet die Abhängigkeiten Lazy-Loading (-Starting) von Bundles Bundles starten nur, wenn alle Abhängigkeiten aufgelöst werden können Java-Packages exportieren im Bundle vorhandene Packages im Classpath vorhandene Packages Java-Packages anderer Bundles Importieren Vorteile: Lose Kopplung, Spezifisches Matching Nachteile: Alle Imports müssen angegeben werden nur Code/Resource Abhängigkeiten Importieren anderer Bundles Vorteile: Nicht-Code Abhängigkeiten, Bequem Nachteile: Starke Kopplung, Packages können verdeckt werden 7

Aurich – Jonas Jacobi OSGi Class Loading Jedes Bundle besitzt einen eigenen ClassLoader!! Zugriff nur auf java.* Eigene Klassen / Klassen im Classpath des Bundles Importierte Packages Exportierte Packages importierter Bundles Mehrere Versionen eines Bundles können gleichzeitig geladen sein 8

Aurich – Jonas Jacobi Bundle B B classpath: library.jar export: B Bundle A classpath: library.jar import: B OSGi Class Loading – Schwierigkeiten Beispiel 9 { ABC var; B.Foo.bar(var); } A library.jar lib … ABC bar(x : ABC) Foo ClassCastException

Aurich – Jonas Jacobi Bundle B export: B import: lib Bundle C classpath: library.jar export: lib B Bundle A import: B, lib OSGi Class Loading – Schwierigkeiten – Lösung 10 { ABC var; B.Foo.bar(var); } A bar(x : ABC) Foo library.jar lib … ABC

Aurich – Jonas Jacobi OSGi Class Loading - Schwierigkeiten Schwierigkeiten mit nicht-OSGi Bibliotheken/Applikationen Hacks zum dynamischen Laden von Implementierungen wie Class.forName, … führen zu Exceptions Tricks zum Umgehen der Probleme Thread.currentThread().setContextClassLoader(…) Externer Zugriff auf Klassen eines eingebetteten OSGi-Frameworks sehr kompliziert! 11

Aurich – Jonas Jacobi Hands-On (Teil 2) Bundle Abhängigkeiten 12

Aurich – Jonas Jacobi Fragment Bundles Hinzufügen neuer Übersetzungen erfordert neue Property Dateien in aurich.translation.impl Problem bei fremden Bundles Lösung: Fragment-Bundles Erweitern den Classpath eines Bundles Besitzen keinen eigenen Life-Cycle Können aber dynamisch hinzugefügt werden Wird genutzt für: Bereitstellen von Konfigurationen/Ressourcen Implementierung von Produktvarianten Insbes. Plattformspezifische Implementierungen 13

Aurich – Jonas Jacobi Hands-On (Teil 3) Fragment-Bundles 14

Aurich – Jonas Jacobi OSGi Services Werden Spezifiziert durch ein Java-Interface Können in verschiedenen Bundles implementiert werden Normale Java Objekte Bundle registriert Service Andere Bundles nutzen Service Klare Trennung von Spezifikation und Implementierung Zentrale Service-Registry Dynamisches Registrieren/Deregistrieren von Services 15

Aurich – Jonas Jacobi OSGi Standard Services OSGi definiert eine Menge von Standard Services Wird von der OSGi Umgebung (z.B. equinox) mitgeliefert Config-Admin-Service Metatype-Service User-Admin-Service Preferences-Service Log-Service Http-Service … diverse weitere insbes. für Mobile-Plattformen 16

Aurich – Jonas Jacobi Service Registry Zentrale Stelle zur Anmeldung von Services zum Auffinden von Services Services können über Properties beschrieben werden Immer vorhanden: objectClass Beliebige weitere definierbar Filter auf Properties zum Finden von Services LDAP Notation (& (objectClass=org.eclipse.console.CommandProvider) (author=*Mustermann*)) 17

Aurich – Jonas Jacobi Benutzen von Services BundleContext Wird einem Bundle-Activator in der Start-Methode übergeben Ermöglicht Zugriff auf das Framework Bundle-Events Service-Events ServiceTracker Kapselt das Suchen und Tracken von Services Declarative Services Einfache deklarative Konfiguration von bereitgestellten/zu nutzenden Services Kümmert sich um das automatische Auflösen von Service- Abhängigkeiten 18

Aurich – Jonas Jacobi Hands-On (Teil 3) OSGi Services 19

Aurich – Jonas Jacobi Fazit Dynamisches Modulsystem für Java Kommt mit relativ wenigen Klassen/Interfaces aus Bundles Einfache.jar Dateien mit speziellen Attributen in der Manifest.mf Life-Cycle Management Abhängigkeitsmanagement Services Lose Koppelung Dynamik Viele Standardservices schon vorhanden Declarative Services zum komfortablen Management ClassLoading tricky 20