SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Más contenido relacionado

Destacado

Europäischer Verkaufsbeschleuniger - die Features
Europäischer  Verkaufsbeschleuniger -  die FeaturesEuropäischer  Verkaufsbeschleuniger -  die Features
Europäischer Verkaufsbeschleuniger - die FeaturesWebInterpret SAS
 
Robo Memo Elpos Tagung
Robo Memo Elpos TagungRobo Memo Elpos Tagung
Robo Memo Elpos Tagungluzius
 
Vorstellung OSGi Users'-Forum Germany
Vorstellung OSGi Users'-Forum GermanyVorstellung OSGi Users'-Forum Germany
Vorstellung OSGi Users'-Forum GermanyKai Hackbarth
 
Einführung XHTML CSS JS // IT 07-10
Einführung XHTML CSS JS // IT 07-10Einführung XHTML CSS JS // IT 07-10
Einführung XHTML CSS JS // IT 07-10Noël Bossart
 
Monthly report on de international sales september 2015
Monthly report on de international sales september 2015Monthly report on de international sales september 2015
Monthly report on de international sales september 2015WebInterpret SAS
 
Trendstudie Wissenschaftskommunikation (Ergebnisse des Experten-Delphis)
Trendstudie Wissenschaftskommunikation (Ergebnisse des Experten-Delphis)Trendstudie Wissenschaftskommunikation (Ergebnisse des Experten-Delphis)
Trendstudie Wissenschaftskommunikation (Ergebnisse des Experten-Delphis)Prof. Alexander Gerber
 
BdS - Garantieverzinsung: Der Große Bluff
BdS - Garantieverzinsung: Der Große BluffBdS - Garantieverzinsung: Der Große Bluff
BdS - Garantieverzinsung: Der Große BluffHans Müller
 
Formulare Lösungen
Formulare LösungenFormulare Lösungen
Formulare LösungenNoël Bossart
 
Raumdesign Kidsrooms Kinderzimmer
Raumdesign Kidsrooms KinderzimmerRaumdesign Kidsrooms Kinderzimmer
Raumdesign Kidsrooms Kinderzimmermefire
 
CSS Basics and Box Model // MM 08-11
CSS Basics and Box Model // MM 08-11CSS Basics and Box Model // MM 08-11
CSS Basics and Box Model // MM 08-11Noël Bossart
 

Destacado (18)

Europäischer Verkaufsbeschleuniger - die Features
Europäischer  Verkaufsbeschleuniger -  die FeaturesEuropäischer  Verkaufsbeschleuniger -  die Features
Europäischer Verkaufsbeschleuniger - die Features
 
Robo Memo Elpos Tagung
Robo Memo Elpos TagungRobo Memo Elpos Tagung
Robo Memo Elpos Tagung
 
Irregular verbs
Irregular verbs Irregular verbs
Irregular verbs
 
Vorstellung OSGi Users'-Forum Germany
Vorstellung OSGi Users'-Forum GermanyVorstellung OSGi Users'-Forum Germany
Vorstellung OSGi Users'-Forum Germany
 
Einführung XHTML CSS JS // IT 07-10
Einführung XHTML CSS JS // IT 07-10Einführung XHTML CSS JS // IT 07-10
Einführung XHTML CSS JS // IT 07-10
 
Monthly report on de international sales september 2015
Monthly report on de international sales september 2015Monthly report on de international sales september 2015
Monthly report on de international sales september 2015
 
Trendstudie Wissenschaftskommunikation (Ergebnisse des Experten-Delphis)
Trendstudie Wissenschaftskommunikation (Ergebnisse des Experten-Delphis)Trendstudie Wissenschaftskommunikation (Ergebnisse des Experten-Delphis)
Trendstudie Wissenschaftskommunikation (Ergebnisse des Experten-Delphis)
 
Umzug
UmzugUmzug
Umzug
 
JavaScript & jQuery
JavaScript & jQueryJavaScript & jQuery
JavaScript & jQuery
 
BdS - Garantieverzinsung: Der Große Bluff
BdS - Garantieverzinsung: Der Große BluffBdS - Garantieverzinsung: Der Große Bluff
BdS - Garantieverzinsung: Der Große Bluff
 
PresentacióN3
PresentacióN3PresentacióN3
PresentacióN3
 
Einladung
EinladungEinladung
Einladung
 
Formulare Lösungen
Formulare LösungenFormulare Lösungen
Formulare Lösungen
 
Raumdesign Kidsrooms Kinderzimmer
Raumdesign Kidsrooms KinderzimmerRaumdesign Kidsrooms Kinderzimmer
Raumdesign Kidsrooms Kinderzimmer
 
CSS Basics and Box Model // MM 08-11
CSS Basics and Box Model // MM 08-11CSS Basics and Box Model // MM 08-11
CSS Basics and Box Model // MM 08-11
 
Journalismus 2-0
Journalismus 2-0Journalismus 2-0
Journalismus 2-0
 
D3 M4 U10 P1 GIOCO
D3 M4 U10 P1 GIOCOD3 M4 U10 P1 GIOCO
D3 M4 U10 P1 GIOCO
 
WissJour20
WissJour20WissJour20
WissJour20
 

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

PLM Open Hours - Dokumentation von Projekten mit Implementierungsanteil
PLM Open Hours - Dokumentation von Projekten mit ImplementierungsanteilPLM Open Hours - Dokumentation von Projekten mit Implementierungsanteil
PLM Open Hours - Dokumentation von Projekten mit ImplementierungsanteilIntelliact AG
 
2011 07-13 collaboration solutions day - cedros
2011 07-13 collaboration solutions day - cedros2011 07-13 collaboration solutions day - cedros
2011 07-13 collaboration solutions day - cedrosPhilipp_Koenigs
 
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis NachhaltigkeitUI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis NachhaltigkeitNico Orschel
 
Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"joergreichert
 
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...OPITZ CONSULTING Deutschland
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightChristinaLerch1
 
Infrastructure Solution Day | Hybrid
Infrastructure Solution Day | HybridInfrastructure Solution Day | Hybrid
Infrastructure Solution Day | HybridMicrosoft Österreich
 
Requirements-Management: Nutzen im Kontext PLM und wie es sich ins PLM integr...
Requirements-Management: Nutzen im Kontext PLM und wie es sich ins PLM integr...Requirements-Management: Nutzen im Kontext PLM und wie es sich ins PLM integr...
Requirements-Management: Nutzen im Kontext PLM und wie es sich ins PLM integr...Intelliact AG
 
Neue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen DokumentationNeue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen DokumentationGeorg Eck
 
Praktischer Einsatz maschineller Übersetzung
Praktischer Einsatz maschineller ÜbersetzungPraktischer Einsatz maschineller Übersetzung
Praktischer Einsatz maschineller ÜbersetzungSDL Language Technologies
 
Domain-Driven Design in der Praxis
Domain-Driven Design in der PraxisDomain-Driven Design in der Praxis
Domain-Driven Design in der PraxisMichael Mirold
 
DNUG 36 2012_Konferenzbroschuere
DNUG 36 2012_KonferenzbroschuereDNUG 36 2012_Konferenzbroschuere
DNUG 36 2012_KonferenzbroschuereFriedel Jonker
 
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Michael Kurz
 
Enterprise Architecture Management - Capabilities entwickeln
Enterprise Architecture Management - Capabilities entwickelnEnterprise Architecture Management - Capabilities entwickeln
Enterprise Architecture Management - Capabilities entwickelnJan Thielscher
 
Webinar: Effiziente Digitalisierungsstrategien für den Mittelstand
Webinar: Effiziente Digitalisierungsstrategien für den Mittelstand  Webinar: Effiziente Digitalisierungsstrategien für den Mittelstand
Webinar: Effiziente Digitalisierungsstrategien für den Mittelstand ELEKS
 

Similar a Realisierung von Service-Varianten und zustandsbehafteten Services aus Basis von OSGi (20)

Requirements Engineering für SEO
Requirements Engineering für SEORequirements Engineering für SEO
Requirements Engineering für SEO
 
PLM Open Hours - Dokumentation von Projekten mit Implementierungsanteil
PLM Open Hours - Dokumentation von Projekten mit ImplementierungsanteilPLM Open Hours - Dokumentation von Projekten mit Implementierungsanteil
PLM Open Hours - Dokumentation von Projekten mit Implementierungsanteil
 
2011 07-13 collaboration solutions day - cedros
2011 07-13 collaboration solutions day - cedros2011 07-13 collaboration solutions day - cedros
2011 07-13 collaboration solutions day - cedros
 
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis NachhaltigkeitUI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
 
Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"
 
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha Night
 
Infrastructure Solution Day | Hybrid
Infrastructure Solution Day | HybridInfrastructure Solution Day | Hybrid
Infrastructure Solution Day | Hybrid
 
projekt0708 PWR Solution (Release 3.0) für SAP NetWeaver
projekt0708 PWR Solution (Release 3.0) für SAP NetWeaverprojekt0708 PWR Solution (Release 3.0) für SAP NetWeaver
projekt0708 PWR Solution (Release 3.0) für SAP NetWeaver
 
Requirements-Management: Nutzen im Kontext PLM und wie es sich ins PLM integr...
Requirements-Management: Nutzen im Kontext PLM und wie es sich ins PLM integr...Requirements-Management: Nutzen im Kontext PLM und wie es sich ins PLM integr...
Requirements-Management: Nutzen im Kontext PLM und wie es sich ins PLM integr...
 
Neue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen DokumentationNeue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen Dokumentation
 
Systementwurf mit UML
Systementwurf mit UMLSystementwurf mit UML
Systementwurf mit UML
 
Praktischer Einsatz maschineller Übersetzung
Praktischer Einsatz maschineller ÜbersetzungPraktischer Einsatz maschineller Übersetzung
Praktischer Einsatz maschineller Übersetzung
 
Domain-Driven Design in der Praxis
Domain-Driven Design in der PraxisDomain-Driven Design in der Praxis
Domain-Driven Design in der Praxis
 
OSLC in Aktion
OSLC in AktionOSLC in Aktion
OSLC in Aktion
 
DNUG 36 2012_Konferenzbroschuere
DNUG 36 2012_KonferenzbroschuereDNUG 36 2012_Konferenzbroschuere
DNUG 36 2012_Konferenzbroschuere
 
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
 
Enterprise Architecture Management - Capabilities entwickeln
Enterprise Architecture Management - Capabilities entwickelnEnterprise Architecture Management - Capabilities entwickeln
Enterprise Architecture Management - Capabilities entwickeln
 
Webinar: Effiziente Digitalisierungsstrategien für den Mittelstand
Webinar: Effiziente Digitalisierungsstrategien für den Mittelstand  Webinar: Effiziente Digitalisierungsstrategien für den Mittelstand
Webinar: Effiziente Digitalisierungsstrategien für den Mittelstand
 
SAP Application Interface Framework (AIF) - Webinar Schnittstellenbetrieb & -...
SAP Application Interface Framework (AIF) - Webinar Schnittstellenbetrieb & -...SAP Application Interface Framework (AIF) - Webinar Schnittstellenbetrieb & -...
SAP Application Interface Framework (AIF) - Webinar Schnittstellenbetrieb & -...
 

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

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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