OSGi-Einsatzkontext: “SiDiff”
                             Warum OSGi?
                   Realisierungs-Probleme
 Lösungsa...
OSGi-Einsatzkontext: “SiDiff”
                                            Warum OSGi?
                                  Re...
OSGi-Einsatzkontext: “SiDiff”
                                            Warum OSGi?
                                    ...
OSGi-Einsatzkontext: “SiDiff”
                                        Warum OSGi?
                                        ...
OSGi-Einsatzkontext: “SiDiff”
                                        Warum OSGi?
                                        ...
OSGi-Einsatzkontext: “SiDiff”
                                        Warum OSGi?
                                        ...
OSGi-Einsatzkontext: “SiDiff”
                                         Warum OSGi?
                                       ...
OSGi-Einsatzkontext: “SiDiff”
                                         Warum OSGi?
                                       ...
OSGi-Einsatzkontext: “SiDiff”
                                         Warum OSGi?
                                       ...
OSGi-Einsatzkontext: “SiDiff”
                                            Warum OSGi?
                                    ...
OSGi-Einsatzkontext: “SiDiff”
                                         Warum OSGi?
                                       ...
OSGi-Einsatzkontext: “SiDiff”
                                         Warum OSGi?
                                       ...
OSGi-Einsatzkontext: “SiDiff”
                                         Warum OSGi?
                                       ...
OSGi-Einsatzkontext: “SiDiff”
                                         Warum OSGi?
                                       ...
OSGi-Einsatzkontext: “SiDiff”
                                         Warum OSGi?
                                       ...
OSGi-Einsatzkontext: “SiDiff”
                                            Warum OSGi?      Einführendes Beispiel
         ...
OSGi-Einsatzkontext: “SiDiff”
                                        Warum OSGi?      Einführendes Beispiel
             ...
OSGi-Einsatzkontext: “SiDiff”
                                        Warum OSGi?      Einführendes Beispiel
             ...
OSGi-Einsatzkontext: “SiDiff”
                                        Warum OSGi?      Einführendes Beispiel
             ...
OSGi-Einsatzkontext: “SiDiff”
                                         Warum OSGi?      Einführendes Beispiel
            ...
OSGi-Einsatzkontext: “SiDiff”
                                         Warum OSGi?      Einführendes Beispiel
            ...
OSGi-Einsatzkontext: “SiDiff”
                                         Warum OSGi?      Einführendes Beispiel
            ...
OSGi-Einsatzkontext: “SiDiff”
                                         Warum OSGi?      Einführendes Beispiel
            ...
OSGi-Einsatzkontext: “SiDiff”
                                         Warum OSGi?      Einführendes Beispiel
            ...
OSGi-Einsatzkontext: “SiDiff”
                                                             Kapselung der OSGi Service-Schi...
OSGi-Einsatzkontext: “SiDiff”
                                                             Kapselung der OSGi Service-Schi...
OSGi-Einsatzkontext: “SiDiff”
                                                           Kapselung der OSGi Service-Schich...
OSGi-Einsatzkontext: “SiDiff”
                                                             Kapselung der OSGi Service-Schi...
OSGi-Einsatzkontext: “SiDiff”
                                                           Kapselung der OSGi Service-Schich...
OSGi-Einsatzkontext: “SiDiff”
                                                         Kapselung der OSGi Service-Schicht
...
OSGi-Einsatzkontext: “SiDiff”
                                                                     Kapselung der OSGi Serv...
OSGi-Einsatzkontext: “SiDiff”
                                                                  Kapselung der OSGi Service...
OSGi-Einsatzkontext: “SiDiff”
                                                             Kapselung der OSGi Service-Schi...
OSGi-Einsatzkontext: “SiDiff”
                                                                Kapselung der OSGi Service-S...
OSGi-Einsatzkontext: “SiDiff”
                                                                       Kapselung der OSGi Se...
OSGi-Einsatzkontext: “SiDiff”
                                                                     Kapselung der OSGi Serv...
OSGi-Einsatzkontext: “SiDiff”
                                                                  Kapselung der OSGi Service...
OSGi-Einsatzkontext: “SiDiff”
                                                                       Kapselung der OSGi Se...
OSGi-Einsatzkontext: “SiDiff”
                                                             Kapselung der OSGi Service-Schi...
OSGi-Einsatzkontext: “SiDiff”
                                                          Kapselung der OSGi Service-Schicht...
OSGi-Einsatzkontext: “SiDiff”
                                        Warum OSGi?
                              Realisieru...
OSGi-Einsatzkontext: “SiDiff”
                                         Warum OSGi?
                               Realisie...
Nächste SlideShare
Wird geladen in …5
×

Realisierung von Service-Varianten und zustandsbehafteten Services aus Basis von OSGi

1.293 Aufrufe

Veröffentlicht am

0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.293
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
3
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Realisierung von Service-Varianten und zustandsbehafteten Services aus Basis von OSGi

  1. 1. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Realisierungs-Probleme Lösungsansätze und technische Umsetzung Zusammenfassung Realisierung von Service-Varianten und zustandsbehafteten Services auf Basis von OSGi Timo Kehrer Sven Wenzel Maik Schmidt Universität Siegen, Praktische Informatik {kehrer, wenzel, mschmidt}@informatik.uni-siegen.de OSGi Users’-Forum Treffen 2009 27.10.2009 @ Eclipse Summit in Ludwigsburg Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  2. 2. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Realisierungs-Probleme Lösungsansätze und technische Umsetzung Zusammenfassung Outline 1 OSGi-Einsatzkontext: “SiDiff” Applikationsdomäne Problemmotivation 2 Warum OSGi? Architektur Technologische Umsetzung 3 Realisierungs-Probleme Einführendes Beispiel Zustandsbehaftete Services Service-Varianten 4 Lösungsansätze und technische Umsetzung Kapselung der OSGi Service-Schicht Zustandsbehaftete Services: “ProvideableService” Service-Varianten: “ConfigurableService” Kombination: “ConfigurableProvideableService” Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  3. 3. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Applikationsdomäne Realisierungs-Probleme Problemmotivation Lösungsansätze und technische Umsetzung Zusammenfassung Outline 1 OSGi-Einsatzkontext: “SiDiff” Applikationsdomäne Problemmotivation 2 Warum OSGi? Architektur Technologische Umsetzung 3 Realisierungs-Probleme Einführendes Beispiel Zustandsbehaftete Services Service-Varianten 4 Lösungsansätze und technische Umsetzung Kapselung der OSGi Service-Schicht Zustandsbehaftete Services: “ProvideableService” Service-Varianten: “ConfigurableService” Kombination: “ConfigurableProvideableService” Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  4. 4. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Applikationsdomäne Realisierungs-Probleme Problemmotivation Lösungsansätze und technische Umsetzung Zusammenfassung Versionen und Varianten technischer Dokumente Technische Dokumente mit grafischer Notation gewinnen zunehmend an Bedeutung, bspw. CAD-Dokumente UML-Modelle Matlab/Simulink-Modelle etc. Komplexe Dokumente werden in der Regel im Team bearbeitet und in Repositories gespeichert Dokumente existieren in mehreren Versionen (Revisionen oder Varianten) Daraus resultieren eine Reihe praktischer Probleme: Konfigurationsmanagement (Diff/Merge) Analyse von Dokumenthistorien Clone Detection etc. Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  5. 5. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Applikationsdomäne Realisierungs-Probleme Problemmotivation Lösungsansätze und technische Umsetzung Zusammenfassung Versionen und Varianten technischer Dokumente Technische Dokumente mit grafischer Notation gewinnen zunehmend an Bedeutung, bspw. CAD-Dokumente UML-Modelle Matlab/Simulink-Modelle etc. Komplexe Dokumente werden in der Regel im Team bearbeitet und in Repositories gespeichert Dokumente existieren in mehreren Versionen (Revisionen oder Varianten) Daraus resultieren eine Reihe praktischer Probleme: Konfigurationsmanagement (Diff/Merge) Analyse von Dokumenthistorien Clone Detection etc. Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  6. 6. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Applikationsdomäne Realisierungs-Probleme Problemmotivation Lösungsansätze und technische Umsetzung Zusammenfassung Textuelle Dokumente vs. grafische/graphbasierte Dokumente Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  7. 7. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Applikationsdomäne Realisierungs-Probleme Problemmotivation Lösungsansätze und technische Umsetzung Zusammenfassung Differenzen auf Basis der textuellen Repräsentation Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  8. 8. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Applikationsdomäne Realisierungs-Probleme Problemmotivation Lösungsansätze und technische Umsetzung Zusammenfassung Konzeptuelle Differenzen Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  9. 9. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Applikationsdomäne Realisierungs-Probleme Problemmotivation Lösungsansätze und technische Umsetzung Zusammenfassung Fazit Text-orientierte Werkzeuge ungeeignet für technische Dokumente mit grafischer Notation Einsatz grafischer Dokumente und Modelle rasant zunhemend, bspw. im Zuge moderner Entwicklungsparadigmen wie der modellbasierten Software-Entwicklung (MDA, MDD, MDSD, etc.) Daher Bedarf für hoch optimierte Verfahren und Werkzeuge für Modelle und grafische Dokumente → SiDiff-Projekt (www.sidiff.org) Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  10. 10. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Architektur Realisierungs-Probleme Technologische Umsetzung Lösungsansätze und technische Umsetzung Zusammenfassung Outline 1 OSGi-Einsatzkontext: “SiDiff” Applikationsdomäne Problemmotivation 2 Warum OSGi? Architektur Technologische Umsetzung 3 Realisierungs-Probleme Einführendes Beispiel Zustandsbehaftete Services Service-Varianten 4 Lösungsansätze und technische Umsetzung Kapselung der OSGi Service-Schicht Zustandsbehaftete Services: “ProvideableService” Service-Varianten: “ConfigurableService” Kombination: “ConfigurableProvideableService” Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  11. 11. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Architektur Realisierungs-Probleme Technologische Umsetzung Lösungsansätze und technische Umsetzung Zusammenfassung Workflow (Hier: Diff-Prozess) Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  12. 12. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Architektur Realisierungs-Probleme Technologische Umsetzung Lösungsansätze und technische Umsetzung Zusammenfassung Komponenten und Services (Hier: Diff-Applikation, vereinfacht) Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  13. 13. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Architektur Realisierungs-Probleme Technologische Umsetzung Lösungsansätze und technische Umsetzung Zusammenfassung Gründe für den Einsatz von OSGi Architektonische Gründe Flexibilität, Austauschbarkeit Lose Kopplung von klar definierten Komponenten/Services Organisatorische Gründe “Echtes” Geheimhaltungsprinzip auf Komponentenebene: Einhaltung von Konventionen weitestgehend durch das Framework sichergestellt Effektive Maßnahme um der Degeneration der Architektur entgegen zu wirken Pragmatische Gründe Umsetzung des Service-Konzepts auf Basis von Java Nahtlose Integration in die Eclipse IDE Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  14. 14. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Architektur Realisierungs-Probleme Technologische Umsetzung Lösungsansätze und technische Umsetzung Zusammenfassung Gründe für den Einsatz von OSGi Architektonische Gründe Flexibilität, Austauschbarkeit Lose Kopplung von klar definierten Komponenten/Services Organisatorische Gründe “Echtes” Geheimhaltungsprinzip auf Komponentenebene: Einhaltung von Konventionen weitestgehend durch das Framework sichergestellt Effektive Maßnahme um der Degeneration der Architektur entgegen zu wirken Pragmatische Gründe Umsetzung des Service-Konzepts auf Basis von Java Nahtlose Integration in die Eclipse IDE Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  15. 15. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Architektur Realisierungs-Probleme Technologische Umsetzung Lösungsansätze und technische Umsetzung Zusammenfassung Gründe für den Einsatz von OSGi Architektonische Gründe Flexibilität, Austauschbarkeit Lose Kopplung von klar definierten Komponenten/Services Organisatorische Gründe “Echtes” Geheimhaltungsprinzip auf Komponentenebene: Einhaltung von Konventionen weitestgehend durch das Framework sichergestellt Effektive Maßnahme um der Degeneration der Architektur entgegen zu wirken Pragmatische Gründe Umsetzung des Service-Konzepts auf Basis von Java Nahtlose Integration in die Eclipse IDE Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  16. 16. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Einführendes Beispiel Realisierungs-Probleme Zustandsbehaftete Services Lösungsansätze und technische Umsetzung Service-Varianten Zusammenfassung Outline 1 OSGi-Einsatzkontext: “SiDiff” Applikationsdomäne Problemmotivation 2 Warum OSGi? Architektur Technologische Umsetzung 3 Realisierungs-Probleme Einführendes Beispiel Zustandsbehaftete Services Service-Varianten 4 Lösungsansätze und technische Umsetzung Kapselung der OSGi Service-Schicht Zustandsbehaftete Services: “ProvideableService” Service-Varianten: “ConfigurableService” Kombination: “ConfigurableProvideableService” Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  17. 17. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Einführendes Beispiel Realisierungs-Probleme Zustandsbehaftete Services Lösungsansätze und technische Umsetzung Service-Varianten Zusammenfassung 3-Wege-Vergleich/-Mischen Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  18. 18. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Einführendes Beispiel Realisierungs-Probleme Zustandsbehaftete Services Lösungsansätze und technische Umsetzung Service-Varianten Zusammenfassung 3-Wege-Vergleich/-Mischen Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  19. 19. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Einführendes Beispiel Realisierungs-Probleme Zustandsbehaftete Services Lösungsansätze und technische Umsetzung Service-Varianten Zusammenfassung 3-Wege-Vergleich/-Mischen Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  20. 20. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Einführendes Beispiel Realisierungs-Probleme Zustandsbehaftete Services Lösungsansätze und technische Umsetzung Service-Varianten Zusammenfassung Nutzung von Services in verschiedenen Kontexten Es kann oft vorkommen, dass ein Service gleichzeitig in verschiedenen Kontexten genutzt werden soll. Problematisch ist dies für zustandsbehaftete Services Hier kann nicht genau eine Service-Instanz beim OSGi-Framework registriert werden. Ein erster Lösungsansatz ist die OSGi Service Factory Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  21. 21. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Einführendes Beispiel Realisierungs-Probleme Zustandsbehaftete Services Lösungsansätze und technische Umsetzung Service-Varianten Zusammenfassung Die OSGi Service Factory und deren Grenzen OSGi Service Factory Die Service Factory ist Bestandteil des OSGi Standards. Kann anstatt des eigentlichen Services beim OSGi-Framework registriert werden. Die eigentliche Service-Instanz wird bei der Anforderung des Services transparent über die Factory erzeugt. Grenzen der OSGi Service Factory Die erzeugten Service-Instanzen werden vom OSGi-Framework pro anfragendem Bundle gecached. Szenarien, in denen ein Bundle verschiedene Instanzen eines Services erhalten sollen sind damit nicht realisierbar. Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  22. 22. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Einführendes Beispiel Realisierungs-Probleme Zustandsbehaftete Services Lösungsansätze und technische Umsetzung Service-Varianten Zusammenfassung Die OSGi Service Factory und deren Grenzen OSGi Service Factory Die Service Factory ist Bestandteil des OSGi Standards. Kann anstatt des eigentlichen Services beim OSGi-Framework registriert werden. Die eigentliche Service-Instanz wird bei der Anforderung des Services transparent über die Factory erzeugt. Grenzen der OSGi Service Factory Die erzeugten Service-Instanzen werden vom OSGi-Framework pro anfragendem Bundle gecached. Szenarien, in denen ein Bundle verschiedene Instanzen eines Services erhalten sollen sind damit nicht realisierbar. Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  23. 23. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Einführendes Beispiel Realisierungs-Probleme Zustandsbehaftete Services Lösungsansätze und technische Umsetzung Service-Varianten Zusammenfassung Konfigurierbare Services und Service-Varianten Oftmals benötigen wir Services, die z.B. für einen bestimmten Dokumenttyp konfiguriert werden. Ein Beispiel ist der ähnlichkeits-basierte Matching-Service, welcher durch eine Dokumenttyp-spezifische Heuristik konfiguriert wird. Zudem sollte die Koexistenz von mehreren Service-Instanzen, welche verschieden konfiguriert sind unterstützt werden. So zum Beispiel beim Einsatz von SiDiff im Rahmen einer Entwicklungsumgebung, welche mehrere Dokumentypen unterstützt. Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  24. 24. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Einführendes Beispiel Realisierungs-Probleme Zustandsbehaftete Services Lösungsansätze und technische Umsetzung Service-Varianten Zusammenfassung Konfigurierbare Services und Service-Varianten Oftmals benötigen wir Services, die z.B. für einen bestimmten Dokumenttyp konfiguriert werden. Ein Beispiel ist der ähnlichkeits-basierte Matching-Service, welcher durch eine Dokumenttyp-spezifische Heuristik konfiguriert wird. Zudem sollte die Koexistenz von mehreren Service-Instanzen, welche verschieden konfiguriert sind unterstützt werden. So zum Beispiel beim Einsatz von SiDiff im Rahmen einer Entwicklungsumgebung, welche mehrere Dokumentypen unterstützt. Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  25. 25. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Outline 1 OSGi-Einsatzkontext: “SiDiff” Applikationsdomäne Problemmotivation 2 Warum OSGi? Architektur Technologische Umsetzung 3 Realisierungs-Probleme Einführendes Beispiel Zustandsbehaftete Services Service-Varianten 4 Lösungsansätze und technische Umsetzung Kapselung der OSGi Service-Schicht Zustandsbehaftete Services: “ProvideableService” Service-Varianten: “ConfigurableService” Kombination: “ConfigurableProvideableService” Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  26. 26. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Outline 1 OSGi-Einsatzkontext: “SiDiff” Applikationsdomäne Problemmotivation 2 Warum OSGi? Architektur Technologische Umsetzung 3 Realisierungs-Probleme Einführendes Beispiel Zustandsbehaftete Services Service-Varianten 4 Lösungsansätze und technische Umsetzung Kapselung der OSGi Service-Schicht Zustandsbehaftete Services: “ProvideableService” Service-Varianten: “ConfigurableService” Kombination: “ConfigurableProvideableService” Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  27. 27. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Der Service-Helper Keine direkte Kommunikation mit dem OSGi-Framework über den OSGi-BundleContext Service-Helper kapselt die Zugriffe auf den Service-Layer des OSGi-Frameworks Allgemeine Schnittstelle für Aufgaben wie bspw. die Registrierung oder das Anfordern von Services Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  28. 28. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Outline 1 OSGi-Einsatzkontext: “SiDiff” Applikationsdomäne Problemmotivation 2 Warum OSGi? Architektur Technologische Umsetzung 3 Realisierungs-Probleme Einführendes Beispiel Zustandsbehaftete Services Service-Varianten 4 Lösungsansätze und technische Umsetzung Kapselung der OSGi Service-Schicht Zustandsbehaftete Services: “ProvideableService” Service-Varianten: “ConfigurableService” Kombination: “ConfigurableProvideableService” Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  29. 29. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Definition der Service-Schnittstelle Heißt wie die Service-Schnittstelle trägt “Leeres” Interface das Suffix Provider. Dient als “Marker” Liegt im selben Paket wie die im automatischen Service-Schnittstelle. Instanzi- ierungsprozess Erbt vom Interface ServiceProvider, getypt auf die Service-Schnittstelle. Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  30. 30. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Implementierung des Services Implementierung des Erzeugung einer Instanz des Dienstes Dienstes Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  31. 31. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Bekanntmachen der Service-Implementierung § p u b l i c c l a s s A c t i v a t o r implements B u n d l e A c t i v a t o r { p u b l i c v o i d s t a r t ( B u n d l e C o n t e x t c o n t e x t ) throws E x c e p t i o n { ServiceHelper . registerServiceProvider ( context , MyServiceProvider . class , new M y S e r v i c e P r o v i d e r I m p l ( ) , null , / / DocType null ) ; / / Variant } p u b l i c v o i d s t o p ( B u n d l e C o n t e x t c o n t e x t ) throws E x c e p t i o n { } } ¦ ¥ Registriert wird der ServiceProvider Die Service-Implementierung selbst muss nicht registriert werden Sie wird über den ServiceProvider bereitgestellt Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  32. 32. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Verwenden des Services § M y S e r v i c e ms = S e r v i c e H e l p e r . g e t S e r v i c e ( context , BundleContext MyService . c l a s s , ServiceInterface null , DocumentType null ) ; Variant ms . d o S o m e t h i n g ( ) ; ¦ ¥ Der Zugriff auf den Provider und die Instanzierung der eigentlichen Service-Implementierung erfolgt transparent. Der ServiceHelper prüft, ob der angeforderte Service ein ProvideableService ist. Wenn ja, wird beim OSGi-Framework ein entsprechend benannter ServiceProvider (hier MyServiceProvider) gesucht und dessen createInstance()-Methode aufgerufen. Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  33. 33. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Outline 1 OSGi-Einsatzkontext: “SiDiff” Applikationsdomäne Problemmotivation 2 Warum OSGi? Architektur Technologische Umsetzung 3 Realisierungs-Probleme Einführendes Beispiel Zustandsbehaftete Services Service-Varianten 4 Lösungsansätze und technische Umsetzung Kapselung der OSGi Service-Schicht Zustandsbehaftete Services: “ProvideableService” Service-Varianten: “ConfigurableService” Kombination: “ConfigurableProvideableService” Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  34. 34. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Definition der Service-Schnittstelle Konfigurierbare Services müssen das Interface ConfigurableService erweitern. § public interface ConfigurableService { public String configure ( Object . . . configData ) ; public void d e c o n f i g u r e ( ) ; public Dictionary String , String g e t P r o p e r t i e s ( ) ; } ¦ ¥ Die configure()-Methode wird aufgerufen, um den Service mit beliebigen Daten (Object...) zu konfigurieren. Der Rückgabewert der configure()-Methode ist der Dokumenttyp für den die Konfiguration geeignet ist. Da sich der Typ i.d.R. aus den Konfigurationsdaten ableitet, kann er sinnvollerweise nur hier ermittelt werden. Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  35. 35. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Implementierung des Services Implementierung unterscheidet sich von “einfachen Services” nur durch die zusätzlichen Methoden des ConfigurableService damit wird der Service-Instanz die Konfiguration übergeben übergeben wird. § p u b l i c c l a s s M y C o n f i g u r a b l e S e r v i c e I m p l implements M y C o n f i g u r a b l e S e r v i c e S t r i n g docType ; public String configure ( Object . . . configData ) { // ... r e t u r n docType ; } public void d e c o n f i g u r e ( ) { } public Dictionary String , String g e t P r o p e r t i e s ( ) { return null ; } } ¦ ¥ Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  36. 36. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Bekanntmachen der Service-Implementierung Registrierung der Schnittstelle und der konkreten Implementierung des konfigurierbaren Services beim ServiceHelper § p u b l i c c l a s s A c t i v a t o r implements B u n d l e A c t i v a t o r { p u b l i c v o i d s t a r t ( B u n d l e C o n t e x t c o n t e x t ) throws E x c e p t i o n { ServiceHelper . registerServiceConfigurator ( context , MyConfigurableService . class , MyConfigurableServiceImpl . class ) ; } p u b l i c v o i d s t o p ( B u n d l e C o n t e x t c o n t e x t ) throws E x c e p t i o n { } } ¦ ¥ Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  37. 37. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Konfiguration des Services Methode des ServiceHelpers: Aufrufbeispiel: § § public s t a t i c void c o n f i g u r e I n s t a n c e ( ServiceHelper . configureInstance ( BundleContext context , context , C l a s s ? i n t e r f a c e C l a s s , MyConfigurableService . class , S t r i n g docType , g e t E P a c k a g e ( ) . getNsURI ( ) , String variant , SIMPLE , Object . . . configData ) c o n f i g . xml ) ; ¦ ¥¦ ¥ Anschließend steht der Service in konfigurierter Form zur Verfügung. Die eigentliche Konfiguration erfolgt transparent durch den ServiceHelper. Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  38. 38. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Verwenden des Services Um einen fertig konfigurierten Service zu verwenden, wird dieser wie alle anderen Services über den ServiceHelper angefordert. Hier müssen jedoch der Dokumenttyp oder der Dokumenttyp und die Variante als Parameter mitgegeben werden, z.B.: § M y S e r v i c e ms = S e r v i c e H e l p e r . g e t S e r v i c e ( context , MyConfigurableService . class , eObj . e C l a s s ( ) . g e t E P a c k a g e ( ) . getNsURI ( ) , SIMPLE ) ; ¦ ¥ Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  39. 39. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Outline 1 OSGi-Einsatzkontext: “SiDiff” Applikationsdomäne Problemmotivation 2 Warum OSGi? Architektur Technologische Umsetzung 3 Realisierungs-Probleme Einführendes Beispiel Zustandsbehaftete Services Service-Varianten 4 Lösungsansätze und technische Umsetzung Kapselung der OSGi Service-Schicht Zustandsbehaftete Services: “ProvideableService” Service-Varianten: “ConfigurableService” Kombination: “ConfigurableProvideableService” Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  40. 40. OSGi-Einsatzkontext: “SiDiff” Kapselung der OSGi Service-Schicht Warum OSGi? Zustandsbehaftete Services: “ProvideableService” Realisierungs-Probleme Service-Varianten: “ConfigurableService” Lösungsansätze und technische Umsetzung Kombination: “ConfigurableProvideableService” Zusammenfassung Konfigurierbare und zustandsbehaftete Services Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  41. 41. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Realisierungs-Probleme Lösungsansätze und technische Umsetzung Zusammenfassung Zusammenfassung SiDiff als Werkzeugkasten zum Bau von Differenz- und Mischwerkzeugen für Modelle Realisierung einer Service-orientierten Architektur auf Basis von OSGi Umsetzung der SiDiff-spezifischen Anforderungen durch eine auf dem OSGi Standard aufbauende Service-Schicht Kapselung des OSGi-Frameworks Unterstützung von zustandsbehafteten Services Unterstützung von Service-Varianten Unterstützung der Kombination beider Service-Arten Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi
  42. 42. OSGi-Einsatzkontext: “SiDiff” Warum OSGi? Realisierungs-Probleme Lösungsansätze und technische Umsetzung Zusammenfassung Vielen Dank für Ihre Aufmerksamkeit Fragen? www.sidiff.org Timo Kehrer Service-Varianten und zustandsbehaftete Services auf Basis von OSGi

×