SlideShare ist ein Scribd-Unternehmen logo
1 von 3
Downloaden Sie, um offline zu lesen
Java Core OSGi in kleinen Dosen – Teil 5




               Hier wird „Service“
               groß geschrieben
               Die OSGi Service Platform (OSGi) hat sich zu einem sehr bedeutenden
               Standard im Java-Umfeld entwickelt. Also wird es für den engagierten Java-
               Entwickler allerhöchste Zeit, sich damit näher auseinander zu setzen.




               von Heiko Seeberger

                                                            kennen. Heute werden wir zwei weitere
                         ie ersten drei Artikel dieser                                                  Frameworkservices: Package Admin
                                                            Standardservices unter die Lupe neh-
                         Serie (Kasten: „Artikelserie:                                                  Service, Start Level Service, (Condi-
                                                            men und damit diese Serie abschließen.
                         OSGi in kleinen Dosen“) über                                                   tional) Permission Admin Service und
               die technischen Grundlagen von OSGi                                                      URL Handlers Service. Diese bieten
                                                            Frameworkservices und Service
               beleuchteten ausführlich das OSGi-                                                       optional eine Erweiterung der Funkti-
                                                            Compendium
               Framework, das die Basis für Modulari-                                                   onalität des OSGi-Frameworks an, z. B.
               sierung, Laufzeitdynamik und Services                                                    eine Möglichkeit zur Festlegung der
                                                            Was ist eigentlich ein OSGi-Standard-
Quellcode      in der Java-Welt darstellt. Im letzten Ar-                                               Startreihenfolge von Bundles oder zur
                                                            service? Die Antwort auf diese Frage gibt
 auf CD        tikel lernten wir mit Declarative Services                                               zentralen Verwaltung der Permissions
                                                            einen Blick in die OSGi-Spezifikation
               bereits einen sehr wichtigen Vertreter                                                   von Bundles. Zum anderen nden wir
                                                            [1]. Dort nden wir zum einen – in der
               der so genannten Standardservices                                                        im Service Compendium eine Vielzahl
                                                            Core Specification – fünf so genannte




            14 javamagazin 4|2009                                                                                            www.JAXenter.de
OSGi in kleinen Dosen – Teil 5 Java Core



                                              Vergleich zu den genannten Lösungen
von Spezi kationen für spezi sche ho-
                                              recht abgespecktes API: Logging-Nach-
rizontale Einsatzbereiche (Kasten: „Ser-
                                              richten können in verschiedenen Levels
vice Compendium“).
                                              geschrieben werden, wobei neben der
     Nicht alle dieser Spezifikationen
                                              Nachricht selbst optional ein rowable
sind Services im eigentlichen Sinn, z. B.                                                   Abb. 1: Equinox Log Service und Equinox
                                              und/oder eine ServiceReference über-
der bereits im dritten Artikel vorgestellte                                                 Console
                                              geben werden können. Letzteres ist die
Service Tracker oder die Initial Provi-
                                                                                            werden. Zunächst fehlen einige Features,
                                              einzige OSGi-spezifische Besonder-
sioning Specification. Des Weiteren
                                                                                            die andere Logging-Lösungen längst
                                              heit, ansonsten fehlen einige der sonst
fällt auf, dass OSGi seine Herkun nicht
                                                                                            bieten, z. B. die Aktivierung von Levels
                                              gewohnten Features, z. B. die Überprü-
leugnen kann: Wir finden zahlreiche
                                                                                            und deren Überprüfung per API oder
                                              fung, ob ein gewisser Level überhaupt
Spezi kationen für den Bereich embed-
                                                                                            die Möglichkeit, den Transport von Log-
                                              „aktiviert“ ist (isDebugEnabled()). Zur
ded/mobile. Wir werden im Folgenden
                                                                                            ging-Nachrichten an LogListener anhand
                                              Nutzung des Log Service wird eine Im-
zwei Standardservices aus dem Service
                                                                                                          von Kriterien einzuschrän-
Compendium betrachten,

                                          In der OSGi-Welt bedeutet                                       ken. Aber das eigentliche
die sich insbesondere gut für
                                                                                                          Problem besteht darin, dass
den Einsatz im Enterprise-
                                          Logging, dass Nachrichten                                       „echte“ Systeme o zahlrei-
Umfeld eignen.
                                                                                                          che Libraries einsetzen, die
                                           dezentral erzeugt werden.
Log Service                                                                                               wiederum eine bestimmte
                                                                                                          Logging-Lösung wie Log4j
Kaum ein Softwaresystem
                                                                                                          oder SLF4J verwenden und
kommt ohne Logging aus.
                                                                                            eben nicht den OSGi Log Service. Somit
                                              plementierung der Log Service Speci-
Die besondere Herausforderung beim
                                                                                            kann man zwar die Logging-Nachrichten
                                              fication benötigt. Wir verwenden für
Logging in der OSGi-Welt besteht darin,
                                                                                            der eigenen Bundles durch die Verwen-
                                              unser Beispiel die Equinox-Implemen-
dass die Logging-Nachrichten dezentral
                                              tierung, die durch das Bundle org.eclipse.    dung des Log Service zentralisieren, je-
– und zwar in den einzelnen Bundles –
                                              equinox.log bereitgestellt wird. Diese        doch wird man die Logging-Nachrichten
erzeugt werden, in den meisten Fällen
                                                                                            von „fremden“ Bundles in separaten Ka-
                                              Implementierung bietet eine Integration
jedoch zentral geschrieben werden sol-
                                                                                            nälen nden. Doch gibt es kein Problem
                                              in die Equinox Console: Mit dem Kom-
len, z. B. in eine zentrale Logging-Datei.
                                              mando log können die letzten Logging-         ohne Lösung: Die meisten der gängigen
OSGi begegnet dieser Herausforderung
                                                                                            Logging-Lösungen bieten ein Design
                                              Nachrichten angezeigt werden, wobei
mit der Log Service Specification [2].
                                                                                            mit einem API und eine separate Imple-
                                              unter Angabe der Bundle-ID als Para-
Darin wird ein zweigeteiltes API spezi-
                                                                                            mentierung, sodass deren Standardver-
                                              meter die Logging-Nachrichten auf das
  ziert: Das Interface LogService dient
                                              entsprechende Bundle eingeschränkt
zum Schreiben von Logging-Nachrich-
ten und das Interface LogReaderService        werden können (Abb. 1).
                                                                                                  Service Compendium
                                                  Da es sich beim Log Service um ei-
bietet die Möglichkeit, geschriebene
Logging-Nachrichten zu lesen oder Log-        nen OSGi-Service handelt, gilt es, bei der          Log Service
Listener zu registrieren, die die Logging-    Benutzung die üblichen Spielregeln zu               Http Service
                                                                                                  Device Access
                                              berücksichtigen: Der Log Service kann
Nachrichten beim Schreiben erhalten.
                                                                                                  Configuration Admin Service
                                              schließlich „kommen und gehen“. Hierfür
    Wer schon einmal mit einem der
                                                                                                  Metatype Service
                                              bietet sich die Verwendung der im letzten
gängigen Logging-Frameworks wie                                                                   Preferences Service
                                              Artikel beschriebenen Declarative Servi-
Log4j oder SLF4J gearbeitet hat, wird                                                             User Admin Service
mit dem LogService rasch zurecht-             ces an. In unserem Beispiel modi zieren             Wire Admin Service
                                                                                                  IO Connector Service
                                              wir die Shell Component derart, dass sie
kommen. Schließlich bietet er ein im
                                                                                                  Initial Provisioning
                                              neben den ContactRepositories auch ei-
                                                                                                  UPnP Device Service
                                              nen LogService referenziert (Listing 1). Da         Declarative Services
      Artikelserie: OSGi in                   wir diese Referenz „mandatory“ machen,              Event Admin Service
                                              wird die Komponente nur aktiv, wenn ein
      kleinen Dosen                                                                               Deplyoment Admin
                                                                                                  Auto Configuration
                                              LogService zur Verfügung steht, sodass wir
       Teil 1: Erste Schritte mit OSGi                                                            Application Admin Service
                                              uns bei dessen Verwendung keine Sorgen
       Teil 2: Immer in Bewegung –                                                                DMT Admin Service
                                              machen müssen (d. h. die Referenz wird
               Bundles und Lifecycle                                                              Monitor Admin Service
                                              niemals null sein, Listing 2).
       Teil 3: Was wünschen Sie? –                                                                Foreign Application Access
                                                  Der Log Service meistert zwar die
               Services à la OSGi                                                                 Service Tracker
       Teil 4: Services auf deklarative                                                           XML Parser Service
                                              eingangs angesprochene Herausforde-
               Weise                                                                              Position
                                              rung, dezentrale Logging-Nachrichten
       Teil 5: Hier wird „Service“ groß                                                           Measurement and State
                                              zentral zu bündeln, kann aber keineswegs
               geschrieben                                                                        Execution Environment
                                              als alleiniger Heilsbringer bezeichnet




                                                                                                                javamagazin 4|2009 15
www.JAXenter.de
Java Core OSGi in kleinen Dosen – Teil 5


                                                                                                                       tierende Verzeichnisstruktur entspricht
                                                                          Service an. Die Logging-Nachrichten
                                                                                                                       dank eines speziellen HttpContext, der
                                                                          werden zentral verarbeitet, egal über
                                                                                                                       den Servlet Path zu einer Bundle-Res-
                                                                          welches API sie erzeugt wurden, sodass
                                                                                                                       source au öst, der Standardstruktur für
                                                                          eine einheitliche Kon guration und vor
                                                                                                                       Web-Applications, d. h. die JSPs, Libra-
                                                                          allem ein zentrales Logging aller Bundles
                           Abb. 2: HelloServlet à la OSGi                                                              ries und TLDs liegen in einem Verzeich-
                                                                          erzielt werden können.
                                                                                                                       nis webapp mit Unterverzeichnis WEB-
                                                                          Http Service                                 INF.
                                                                          OSGi erobert derzeit, nach der embed-
                                                                                                                       Fazit
                                                                          ded/mobile-Welt und dem Desktop,
                                                                          nun auch den Server. Dazu passend stel-      Die beiden exemplarisch vorgestellten
                                                                          len wir nun den Http Service [4] vor. Die-   OSGi-Standardservices zeigen, dass OS-
                                                                          ser ist in der Standardversion gar nicht     Gi nicht nur ein abstraktes dynamisches
                                                                          so aktuell, schließlich basiert er nur auf   Modulsystem für Java bietet, sondern
                                                                          Version 2.1 des Servlet API und bietet       darüber hinaus wichtige Einsatzszena-
                                                                          auch keine Unterstützung für JavaSer-        rien durch horizontale Dienste abdeckt.
                           Abb. 3: Ausgabe aller Contacts mit
                           Servlet und JSP
                                                                          ver Pages. Das Interface HttpService er-     Natürlich muss die Spezifikation die
                                                                          möglicht das Registrieren von statischen     Geschwindigkeit des technologischen
                                                                          Ressourcen und Servlets. Dabei wird          Wandels mit aufnehmen, beispielswei-
                           halten modi ziert werden kann. Eine aus
                                                                          neben der Ressource oder dem Servlet         se beim Versionsstand des Http Service.
                           unserer Sicht besonders gelungene Lö-
                                                                          im Wesentlichen ein so genannter Ali-        Wer die aktuelle Entwicklung der im
                           sung dieses „Multi-API-Logging“ bietet
                                                                          as übergeben, der dem Servlet Path der       Sommer dieses Jahres erwarteten nächs-
                           PAX Logging [3]: Das API Bundle bietet
                                                                          URL entspricht. Listing 3 zeigt den Aus-     ten Version 4.2 verfolgt, wird feststellen,
                           das API der meisten gängigen Logging-
                                                                          schnitt einer Service Component, die bei     dass sich gerade im Bereich der Enter-
                           Lösungen einschließlich dem OSGi Log
                                                                          der Aktivierung unter dem Alias /hello       prise-Technologien auch tatsächlich
                                                                          ein HelloServlet registriert und die Re-     eine ganze Menge tut: Transaktionen,
                                                                          gistrierung bei der Deaktivierung wie-       Verteilung und Blueprint Service, auch
Listing 1
                                                                          der au ebt. Dadurch kann es unter dem        bekannt als Spring Dynamic Modules.
<component name=“com.weiglewilczek...shell“>
                                                                          URL http://localhost:8080/hello (Host        Wir dürfen gespannt sein!
<implementation class=“com.weiglewilczek...Component“/>
                                                                          und Port können natürlich variieren)
<service>
    <provide interface=“org.eclipse...CommandProvider“/>                  aufgerufen werden. In unserem Beispiel
                                                                                                                                     Heiko Seeberger ist als
</service>
                                                                          resultiert das in einfachem statischem                     Technical Director für die
<reference name=“contactRepositories“
                                                                          HTML-Code (Abb. 2).                                        Weigle Wilczek GmbH
    interface=“com.weiglewilczek...ContactRepository“
                                                                                                                                     tätig. Sein technischer
                                                                               Natürlich wird der Http Service in
    cardinality=“1..n“/>
                                                                                                                                     Schwerpunkt liegt in der
                                                                          dieser Standardversion OSGi nicht zum
<reference name=“logService“
                                                                                                                                     Entwicklung von Unterneh-
                                                                          entscheidenden Durchbruch auf dem
    interface=“org.osgi...LogService“                                                                                    mensanwendungen mit OSGi, Eclipse
                                                                          Server verhelfen. Dazu fehlen einfach
    cardinality=“1..1“/>                                                                                                 RCP, Spring, AspectJ und Java EE. Sei-
                                                                                                                         ne Erfahrungen aus über zehn Jahren
</component>                                                              zu viele Features, die von heutigen Web-
                                                                                                                         IT-Beratung und Softwareentwicklung
                                                                          Applications vorausgesetzt werden, z. B.       fließen in die Eclipse Training Alliance
                                                                          Servlet Filter und JavaServer Pages. Zum
Listing 2                                                                                                                ein. Zudem ist Heiko Seeberger aktiver
                                                                          Glück gibt es einige Erweiterungen, die        Committer in Eclipse-Projekten, Autor
protected void activate(ComponentContext context) {
                                                                                                                         zahlreicher Fachartikel und Redner auf
                                                                          hier aushelfen. So bietet z. B. Equinox
    logService = (LogService) context.locateService(“logService“);
                                                                                                                         einschlägigen Konferenzen.
    logService.log(LogService.LOG_INFO, “Activating ...“);                neben einer Standardimplementierung
    ....
                                                                          auch eine Variante auf Basis von Jetty
                                                                          und Jasper an, die Servlet API 2.4 und
                                                                                                                         Links & Literatur
                                                                          JavaServer Pages 2.0 unterstützt. Noch
Listing 3
                                                                          aktueller ist derzeit PAX Web [5], eben-
private static final String HELLO = “/hello“;                                                                             [1] OSGi-Spezifikation:
                                                                          falls mit gebündeltem Jetty und Support            www.osgi.org/Specifications/
protected void activate(ComponentContext context) throws Exception {      für Servlet API 2.5 und JavaServer Pages       [2] OSGi Service Compendium,
    httpService = (HttpService) context.locateService(“httpService“);                                                        S. 5ff, Log Service Specification
                                                                          2.1.
    httpService.registerServlet(HELLO, new HelloServlet(), null, null);                                                  [3] PAX Logging: wiki.ops4j.org/
                                                                               In unserem Beispiel verwenden wir
}                                                                                                                            display/ops4j/Pax+Logging
                                                                          PAX Web, um gemäß Model-2-Design
                                                                                                                         [4] OSGi Service Compendium, S. 17
                                                                          mit einem Servlet die Kontakte aller
protected void deactivate(ComponentContext context) {                                                                        ff., Http Service Specification
                                                                          ContactRepositories abzufragen und die-
    httpService.unregister(HELLO);
                                                                                                                         [5] PAX Web: wiki.ops4j.org/display/
                                                                          se mit einer JSP unter Verwendung von
}
                                                                                                                             ops4j/Pax+Web
                                                                          Taglibs anzuzeigen (Abb. 3). Die resul-




                   16 javamagazin 4|2009                                                                                                       www.JAXenter.de

Weitere ähnliche Inhalte

Andere mochten auch

Eclipse Magazin 12 - Security does matter
Eclipse Magazin 12 - Security does matterEclipse Magazin 12 - Security does matter
Eclipse Magazin 12 - Security does matterHeiko Seeberger
 
Strukturen und Funktionen von Weblog-Öffentlichkeiten
Strukturen und Funktionen von Weblog-ÖffentlichkeitenStrukturen und Funktionen von Weblog-Öffentlichkeiten
Strukturen und Funktionen von Weblog-ÖffentlichkeitenChristian Katzenbach
 
Die Vergangenheit
Die VergangenheitDie Vergangenheit
Die Vergangenheits ghani
 
Mit Neugier Zum Erfolg
Mit Neugier Zum ErfolgMit Neugier Zum Erfolg
Mit Neugier Zum ErfolgDirk Röhrborn
 
Mein Lieblingssportler - MałGorzata Glinka De
Mein Lieblingssportler - MałGorzata Glinka DeMein Lieblingssportler - MałGorzata Glinka De
Mein Lieblingssportler - MałGorzata Glinka Dehaniak77
 
Plettenbacher: Die drohende Wirtschaftskrise: Ursachen und Auswege 20081130
Plettenbacher: Die drohende Wirtschaftskrise: Ursachen und Auswege 20081130Plettenbacher: Die drohende Wirtschaftskrise: Ursachen und Auswege 20081130
Plettenbacher: Die drohende Wirtschaftskrise: Ursachen und Auswege 20081130neuesgeld
 
Crash Porsche Vs Leitplanke
Crash Porsche Vs LeitplankeCrash Porsche Vs Leitplanke
Crash Porsche Vs Leitplankeres stillhart
 
Que proponen los candidatos a alcalde x santiago
Que proponen los candidatos a alcalde x santiagoQue proponen los candidatos a alcalde x santiago
Que proponen los candidatos a alcalde x santiagoCIPDEL
 
El cuerpoespin mimoso
El cuerpoespin mimoso El cuerpoespin mimoso
El cuerpoespin mimoso martiinsuarez
 
Estatutoccca decreto 194
Estatutoccca decreto 194Estatutoccca decreto 194
Estatutoccca decreto 194Marco Quimi
 
08 reacciones químicas
08 reacciones químicas08 reacciones químicas
08 reacciones químicasJorge Escorcia
 
Crash Porsche Vs Vogel
Crash Porsche Vs VogelCrash Porsche Vs Vogel
Crash Porsche Vs Vogelres stillhart
 

Andere mochten auch (20)

Eclipse Magazin 12 - Security does matter
Eclipse Magazin 12 - Security does matterEclipse Magazin 12 - Security does matter
Eclipse Magazin 12 - Security does matter
 
Strukturen und Funktionen von Weblog-Öffentlichkeiten
Strukturen und Funktionen von Weblog-ÖffentlichkeitenStrukturen und Funktionen von Weblog-Öffentlichkeiten
Strukturen und Funktionen von Weblog-Öffentlichkeiten
 
Gender-Thesen
Gender-ThesenGender-Thesen
Gender-Thesen
 
Die Vergangenheit
Die VergangenheitDie Vergangenheit
Die Vergangenheit
 
Mit Neugier Zum Erfolg
Mit Neugier Zum ErfolgMit Neugier Zum Erfolg
Mit Neugier Zum Erfolg
 
7 Wonders
7 Wonders7 Wonders
7 Wonders
 
Mein Lieblingssportler - MałGorzata Glinka De
Mein Lieblingssportler - MałGorzata Glinka DeMein Lieblingssportler - MałGorzata Glinka De
Mein Lieblingssportler - MałGorzata Glinka De
 
Unidad 6
Unidad 6Unidad 6
Unidad 6
 
Opening Session: Jugend-Jugendarbeit-Zukunft
Opening Session: Jugend-Jugendarbeit-ZukunftOpening Session: Jugend-Jugendarbeit-Zukunft
Opening Session: Jugend-Jugendarbeit-Zukunft
 
Plettenbacher: Die drohende Wirtschaftskrise: Ursachen und Auswege 20081130
Plettenbacher: Die drohende Wirtschaftskrise: Ursachen und Auswege 20081130Plettenbacher: Die drohende Wirtschaftskrise: Ursachen und Auswege 20081130
Plettenbacher: Die drohende Wirtschaftskrise: Ursachen und Auswege 20081130
 
Crash Porsche Vs Leitplanke
Crash Porsche Vs LeitplankeCrash Porsche Vs Leitplanke
Crash Porsche Vs Leitplanke
 
Funciones y Tiipos de evaluacion
Funciones y Tiipos de evaluacionFunciones y Tiipos de evaluacion
Funciones y Tiipos de evaluacion
 
Practica 8
Practica 8Practica 8
Practica 8
 
Que proponen los candidatos a alcalde x santiago
Que proponen los candidatos a alcalde x santiagoQue proponen los candidatos a alcalde x santiago
Que proponen los candidatos a alcalde x santiago
 
El cuerpoespin mimoso
El cuerpoespin mimoso El cuerpoespin mimoso
El cuerpoespin mimoso
 
Estatutoccca decreto 194
Estatutoccca decreto 194Estatutoccca decreto 194
Estatutoccca decreto 194
 
08 reacciones químicas
08 reacciones químicas08 reacciones químicas
08 reacciones químicas
 
Crash Porsche Vs Vogel
Crash Porsche Vs VogelCrash Porsche Vs Vogel
Crash Porsche Vs Vogel
 
Práctica 23
Práctica 23Práctica 23
Práctica 23
 
Practica 5
Practica 5Practica 5
Practica 5
 

Ähnlich wie JM 04/09 - OSGi in kleinen Dosen 5

JM 03/09 - OSGi in kleinen Dosen 4
JM 03/09 - OSGi in kleinen Dosen 4JM 03/09 - OSGi in kleinen Dosen 4
JM 03/09 - OSGi in kleinen Dosen 4Heiko Seeberger
 
JSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederJSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederChristoph Pickl
 
Eclipse Magazin15 - Performance Logging
Eclipse Magazin15 - Performance LoggingEclipse Magazin15 - Performance Logging
Eclipse Magazin15 - Performance LoggingHeiko Seeberger
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerSandro Sonntag
 
NEW VERSION: Data Quality und SOA
NEW VERSION: Data Quality und SOANEW VERSION: Data Quality und SOA
NEW VERSION: Data Quality und SOAUniserv
 
Apache Sling Server Seitiges OSGi
Apache Sling Server Seitiges OSGiApache Sling Server Seitiges OSGi
Apache Sling Server Seitiges OSGiFelix Meschberger
 
Amazon Web Services: Flaggschiff des Cloud Computings
Amazon Web Services: Flaggschiff des Cloud ComputingsAmazon Web Services: Flaggschiff des Cloud Computings
Amazon Web Services: Flaggschiff des Cloud ComputingsLothar Wieske
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickKarin Patenge
 
Microservices - Was EAs zu Microservices wissen sollten
Microservices - Was EAs zu Microservices wissen solltenMicroservices - Was EAs zu Microservices wissen sollten
Microservices - Was EAs zu Microservices wissen solltenJan Thielscher
 
Do´s and Dont´s mit Oracle RDS
Do´s and Dont´s mit Oracle RDS Do´s and Dont´s mit Oracle RDS
Do´s and Dont´s mit Oracle RDS esentri AG
 
Artikel Professional Computing: Mit SOA zu effizientem Business Process Manag...
Artikel Professional Computing: Mit SOA zu effizientem Business Process Manag...Artikel Professional Computing: Mit SOA zu effizientem Business Process Manag...
Artikel Professional Computing: Mit SOA zu effizientem Business Process Manag...Peter Affolter
 
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013goobi_org
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007smancke
 
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAsKarin Patenge
 
Monitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-AnwendungenMonitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-Anwendungengedoplan
 

Ähnlich wie JM 04/09 - OSGi in kleinen Dosen 5 (20)

JM 03/09 - OSGi in kleinen Dosen 4
JM 03/09 - OSGi in kleinen Dosen 4JM 03/09 - OSGi in kleinen Dosen 4
JM 03/09 - OSGi in kleinen Dosen 4
 
JSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederJSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael Greifeneder
 
Eclipse Magazin15 - Performance Logging
Eclipse Magazin15 - Performance LoggingEclipse Magazin15 - Performance Logging
Eclipse Magazin15 - Performance Logging
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM Server
 
NEW VERSION: Data Quality und SOA
NEW VERSION: Data Quality und SOANEW VERSION: Data Quality und SOA
NEW VERSION: Data Quality und SOA
 
2011 09-09 activiti
2011 09-09 activiti2011 09-09 activiti
2011 09-09 activiti
 
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
 
Apache Sling Server Seitiges OSGi
Apache Sling Server Seitiges OSGiApache Sling Server Seitiges OSGi
Apache Sling Server Seitiges OSGi
 
Amazon Web Services: Flaggschiff des Cloud Computings
Amazon Web Services: Flaggschiff des Cloud ComputingsAmazon Web Services: Flaggschiff des Cloud Computings
Amazon Web Services: Flaggschiff des Cloud Computings
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
 
Digicomp sqlday migration
Digicomp sqlday migrationDigicomp sqlday migration
Digicomp sqlday migration
 
JBoss ESB
JBoss ESBJBoss ESB
JBoss ESB
 
Openshift
OpenshiftOpenshift
Openshift
 
Microservices - Was EAs zu Microservices wissen sollten
Microservices - Was EAs zu Microservices wissen solltenMicroservices - Was EAs zu Microservices wissen sollten
Microservices - Was EAs zu Microservices wissen sollten
 
Do´s and Dont´s mit Oracle RDS
Do´s and Dont´s mit Oracle RDS Do´s and Dont´s mit Oracle RDS
Do´s and Dont´s mit Oracle RDS
 
Artikel Professional Computing: Mit SOA zu effizientem Business Process Manag...
Artikel Professional Computing: Mit SOA zu effizientem Business Process Manag...Artikel Professional Computing: Mit SOA zu effizientem Business Process Manag...
Artikel Professional Computing: Mit SOA zu effizientem Business Process Manag...
 
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
Leistungsvergleich Präsentationsoberflächen für digitale Sammlungen 2013
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007
 
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
 
Monitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-AnwendungenMonitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-Anwendungen
 

Mehr von Heiko Seeberger

Scaladays 2011 - The Ease of Scalaz
Scaladays 2011 - The Ease of ScalazScaladays 2011 - The Ease of Scalaz
Scaladays 2011 - The Ease of ScalazHeiko Seeberger
 
RheinJUG 2010 - Sprechen Sie Scala?
RheinJUG 2010 - Sprechen Sie Scala?RheinJUG 2010 - Sprechen Sie Scala?
RheinJUG 2010 - Sprechen Sie Scala?Heiko Seeberger
 
Objektforum 2010 - Sprechen Sie Scala?
Objektforum 2010 - Sprechen Sie Scala?Objektforum 2010 - Sprechen Sie Scala?
Objektforum 2010 - Sprechen Sie Scala?Heiko Seeberger
 
JM 08/09 - Beginning Scala Review
JM 08/09 - Beginning Scala ReviewJM 08/09 - Beginning Scala Review
JM 08/09 - Beginning Scala ReviewHeiko Seeberger
 
OSGi DevCon Europe 09 - OSGi on Scala
OSGi DevCon Europe 09 - OSGi on ScalaOSGi DevCon Europe 09 - OSGi on Scala
OSGi DevCon Europe 09 - OSGi on ScalaHeiko Seeberger
 
JAX 09 - OSGi Service Components Models
JAX 09 - OSGi Service Components ModelsJAX 09 - OSGi Service Components Models
JAX 09 - OSGi Service Components ModelsHeiko Seeberger
 
Eclipse Magazin 12 - Design by Contract
Eclipse Magazin 12 - Design by ContractEclipse Magazin 12 - Design by Contract
Eclipse Magazin 12 - Design by ContractHeiko Seeberger
 
EclipseCon 08 - Agile RCP
EclipseCon 08 - Agile RCPEclipseCon 08 - Agile RCP
EclipseCon 08 - Agile RCPHeiko Seeberger
 
W-JAX 07 - AOP im Einsatz mit OSGi und RCP
W-JAX 07 - AOP im Einsatz mit OSGi und RCPW-JAX 07 - AOP im Einsatz mit OSGi und RCP
W-JAX 07 - AOP im Einsatz mit OSGi und RCPHeiko Seeberger
 
W-JAX 08 - Declarative Services versus Spring Dynamic Modules
W-JAX 08 - Declarative Services versus Spring Dynamic ModulesW-JAX 08 - Declarative Services versus Spring Dynamic Modules
W-JAX 08 - Declarative Services versus Spring Dynamic ModulesHeiko Seeberger
 

Mehr von Heiko Seeberger (20)

Scaladays 2011 - The Ease of Scalaz
Scaladays 2011 - The Ease of ScalazScaladays 2011 - The Ease of Scalaz
Scaladays 2011 - The Ease of Scalaz
 
Java Magazin - Lift
Java Magazin - LiftJava Magazin - Lift
Java Magazin - Lift
 
JavaSPEKTRUM - Scala 3
JavaSPEKTRUM - Scala 3JavaSPEKTRUM - Scala 3
JavaSPEKTRUM - Scala 3
 
JavaSPEKTRUM - Scala 2
JavaSPEKTRUM - Scala 2JavaSPEKTRUM - Scala 2
JavaSPEKTRUM - Scala 2
 
JavaSPEKTRUM - Scala 1
JavaSPEKTRUM - Scala 1JavaSPEKTRUM - Scala 1
JavaSPEKTRUM - Scala 1
 
RheinJUG 2010 - Sprechen Sie Scala?
RheinJUG 2010 - Sprechen Sie Scala?RheinJUG 2010 - Sprechen Sie Scala?
RheinJUG 2010 - Sprechen Sie Scala?
 
Objektforum 2010 - Sprechen Sie Scala?
Objektforum 2010 - Sprechen Sie Scala?Objektforum 2010 - Sprechen Sie Scala?
Objektforum 2010 - Sprechen Sie Scala?
 
W-JAX 09 - ScalaModules
W-JAX 09 - ScalaModulesW-JAX 09 - ScalaModules
W-JAX 09 - ScalaModules
 
W-JAX 09 - Lift
W-JAX 09 - LiftW-JAX 09 - Lift
W-JAX 09 - Lift
 
JM 08/09 - Beginning Scala Review
JM 08/09 - Beginning Scala ReviewJM 08/09 - Beginning Scala Review
JM 08/09 - Beginning Scala Review
 
JM 08/09 - ScalaModules
JM 08/09 - ScalaModulesJM 08/09 - ScalaModules
JM 08/09 - ScalaModules
 
OSGi DevCon Europe 09 - OSGi on Scala
OSGi DevCon Europe 09 - OSGi on ScalaOSGi DevCon Europe 09 - OSGi on Scala
OSGi DevCon Europe 09 - OSGi on Scala
 
JAX 09 - OSGi on Scala
JAX 09 - OSGi on ScalaJAX 09 - OSGi on Scala
JAX 09 - OSGi on Scala
 
JAX 09 - OSGi Service Components Models
JAX 09 - OSGi Service Components ModelsJAX 09 - OSGi Service Components Models
JAX 09 - OSGi Service Components Models
 
JAX 08 - Agile RCP
JAX 08 - Agile RCPJAX 08 - Agile RCP
JAX 08 - Agile RCP
 
Eclipse Magazin 12 - Design by Contract
Eclipse Magazin 12 - Design by ContractEclipse Magazin 12 - Design by Contract
Eclipse Magazin 12 - Design by Contract
 
JUGM 07 - AspectJ
JUGM 07 - AspectJJUGM 07 - AspectJ
JUGM 07 - AspectJ
 
EclipseCon 08 - Agile RCP
EclipseCon 08 - Agile RCPEclipseCon 08 - Agile RCP
EclipseCon 08 - Agile RCP
 
W-JAX 07 - AOP im Einsatz mit OSGi und RCP
W-JAX 07 - AOP im Einsatz mit OSGi und RCPW-JAX 07 - AOP im Einsatz mit OSGi und RCP
W-JAX 07 - AOP im Einsatz mit OSGi und RCP
 
W-JAX 08 - Declarative Services versus Spring Dynamic Modules
W-JAX 08 - Declarative Services versus Spring Dynamic ModulesW-JAX 08 - Declarative Services versus Spring Dynamic Modules
W-JAX 08 - Declarative Services versus Spring Dynamic Modules
 

JM 04/09 - OSGi in kleinen Dosen 5

  • 1. Java Core OSGi in kleinen Dosen – Teil 5 Hier wird „Service“ groß geschrieben Die OSGi Service Platform (OSGi) hat sich zu einem sehr bedeutenden Standard im Java-Umfeld entwickelt. Also wird es für den engagierten Java- Entwickler allerhöchste Zeit, sich damit näher auseinander zu setzen. von Heiko Seeberger kennen. Heute werden wir zwei weitere ie ersten drei Artikel dieser Frameworkservices: Package Admin Standardservices unter die Lupe neh- Serie (Kasten: „Artikelserie: Service, Start Level Service, (Condi- men und damit diese Serie abschließen. OSGi in kleinen Dosen“) über tional) Permission Admin Service und die technischen Grundlagen von OSGi URL Handlers Service. Diese bieten Frameworkservices und Service beleuchteten ausführlich das OSGi- optional eine Erweiterung der Funkti- Compendium Framework, das die Basis für Modulari- onalität des OSGi-Frameworks an, z. B. sierung, Laufzeitdynamik und Services eine Möglichkeit zur Festlegung der Was ist eigentlich ein OSGi-Standard- Quellcode in der Java-Welt darstellt. Im letzten Ar- Startreihenfolge von Bundles oder zur service? Die Antwort auf diese Frage gibt auf CD tikel lernten wir mit Declarative Services zentralen Verwaltung der Permissions einen Blick in die OSGi-Spezifikation bereits einen sehr wichtigen Vertreter von Bundles. Zum anderen nden wir [1]. Dort nden wir zum einen – in der der so genannten Standardservices im Service Compendium eine Vielzahl Core Specification – fünf so genannte 14 javamagazin 4|2009 www.JAXenter.de
  • 2. OSGi in kleinen Dosen – Teil 5 Java Core Vergleich zu den genannten Lösungen von Spezi kationen für spezi sche ho- recht abgespecktes API: Logging-Nach- rizontale Einsatzbereiche (Kasten: „Ser- richten können in verschiedenen Levels vice Compendium“). geschrieben werden, wobei neben der Nicht alle dieser Spezifikationen Nachricht selbst optional ein rowable sind Services im eigentlichen Sinn, z. B. Abb. 1: Equinox Log Service und Equinox und/oder eine ServiceReference über- der bereits im dritten Artikel vorgestellte Console geben werden können. Letzteres ist die Service Tracker oder die Initial Provi- werden. Zunächst fehlen einige Features, einzige OSGi-spezifische Besonder- sioning Specification. Des Weiteren die andere Logging-Lösungen längst heit, ansonsten fehlen einige der sonst fällt auf, dass OSGi seine Herkun nicht bieten, z. B. die Aktivierung von Levels gewohnten Features, z. B. die Überprü- leugnen kann: Wir finden zahlreiche und deren Überprüfung per API oder fung, ob ein gewisser Level überhaupt Spezi kationen für den Bereich embed- die Möglichkeit, den Transport von Log- „aktiviert“ ist (isDebugEnabled()). Zur ded/mobile. Wir werden im Folgenden ging-Nachrichten an LogListener anhand Nutzung des Log Service wird eine Im- zwei Standardservices aus dem Service von Kriterien einzuschrän- Compendium betrachten, In der OSGi-Welt bedeutet ken. Aber das eigentliche die sich insbesondere gut für Problem besteht darin, dass den Einsatz im Enterprise- Logging, dass Nachrichten „echte“ Systeme o zahlrei- Umfeld eignen. che Libraries einsetzen, die dezentral erzeugt werden. Log Service wiederum eine bestimmte Logging-Lösung wie Log4j Kaum ein Softwaresystem oder SLF4J verwenden und kommt ohne Logging aus. eben nicht den OSGi Log Service. Somit plementierung der Log Service Speci- Die besondere Herausforderung beim kann man zwar die Logging-Nachrichten fication benötigt. Wir verwenden für Logging in der OSGi-Welt besteht darin, der eigenen Bundles durch die Verwen- unser Beispiel die Equinox-Implemen- dass die Logging-Nachrichten dezentral tierung, die durch das Bundle org.eclipse. dung des Log Service zentralisieren, je- – und zwar in den einzelnen Bundles – equinox.log bereitgestellt wird. Diese doch wird man die Logging-Nachrichten erzeugt werden, in den meisten Fällen von „fremden“ Bundles in separaten Ka- Implementierung bietet eine Integration jedoch zentral geschrieben werden sol- nälen nden. Doch gibt es kein Problem in die Equinox Console: Mit dem Kom- len, z. B. in eine zentrale Logging-Datei. mando log können die letzten Logging- ohne Lösung: Die meisten der gängigen OSGi begegnet dieser Herausforderung Logging-Lösungen bieten ein Design Nachrichten angezeigt werden, wobei mit der Log Service Specification [2]. mit einem API und eine separate Imple- unter Angabe der Bundle-ID als Para- Darin wird ein zweigeteiltes API spezi- mentierung, sodass deren Standardver- meter die Logging-Nachrichten auf das ziert: Das Interface LogService dient entsprechende Bundle eingeschränkt zum Schreiben von Logging-Nachrich- ten und das Interface LogReaderService werden können (Abb. 1). Service Compendium Da es sich beim Log Service um ei- bietet die Möglichkeit, geschriebene Logging-Nachrichten zu lesen oder Log- nen OSGi-Service handelt, gilt es, bei der Log Service Listener zu registrieren, die die Logging- Benutzung die üblichen Spielregeln zu Http Service Device Access berücksichtigen: Der Log Service kann Nachrichten beim Schreiben erhalten. Configuration Admin Service schließlich „kommen und gehen“. Hierfür Wer schon einmal mit einem der Metatype Service bietet sich die Verwendung der im letzten gängigen Logging-Frameworks wie Preferences Service Artikel beschriebenen Declarative Servi- Log4j oder SLF4J gearbeitet hat, wird User Admin Service mit dem LogService rasch zurecht- ces an. In unserem Beispiel modi zieren Wire Admin Service IO Connector Service wir die Shell Component derart, dass sie kommen. Schließlich bietet er ein im Initial Provisioning neben den ContactRepositories auch ei- UPnP Device Service nen LogService referenziert (Listing 1). Da Declarative Services Artikelserie: OSGi in wir diese Referenz „mandatory“ machen, Event Admin Service wird die Komponente nur aktiv, wenn ein kleinen Dosen Deplyoment Admin Auto Configuration LogService zur Verfügung steht, sodass wir Teil 1: Erste Schritte mit OSGi Application Admin Service uns bei dessen Verwendung keine Sorgen Teil 2: Immer in Bewegung – DMT Admin Service machen müssen (d. h. die Referenz wird Bundles und Lifecycle Monitor Admin Service niemals null sein, Listing 2). Teil 3: Was wünschen Sie? – Foreign Application Access Der Log Service meistert zwar die Services à la OSGi Service Tracker Teil 4: Services auf deklarative XML Parser Service eingangs angesprochene Herausforde- Weise Position rung, dezentrale Logging-Nachrichten Teil 5: Hier wird „Service“ groß Measurement and State zentral zu bündeln, kann aber keineswegs geschrieben Execution Environment als alleiniger Heilsbringer bezeichnet javamagazin 4|2009 15 www.JAXenter.de
  • 3. Java Core OSGi in kleinen Dosen – Teil 5 tierende Verzeichnisstruktur entspricht Service an. Die Logging-Nachrichten dank eines speziellen HttpContext, der werden zentral verarbeitet, egal über den Servlet Path zu einer Bundle-Res- welches API sie erzeugt wurden, sodass source au öst, der Standardstruktur für eine einheitliche Kon guration und vor Web-Applications, d. h. die JSPs, Libra- allem ein zentrales Logging aller Bundles Abb. 2: HelloServlet à la OSGi ries und TLDs liegen in einem Verzeich- erzielt werden können. nis webapp mit Unterverzeichnis WEB- Http Service INF. OSGi erobert derzeit, nach der embed- Fazit ded/mobile-Welt und dem Desktop, nun auch den Server. Dazu passend stel- Die beiden exemplarisch vorgestellten len wir nun den Http Service [4] vor. Die- OSGi-Standardservices zeigen, dass OS- ser ist in der Standardversion gar nicht Gi nicht nur ein abstraktes dynamisches so aktuell, schließlich basiert er nur auf Modulsystem für Java bietet, sondern Version 2.1 des Servlet API und bietet darüber hinaus wichtige Einsatzszena- auch keine Unterstützung für JavaSer- rien durch horizontale Dienste abdeckt. Abb. 3: Ausgabe aller Contacts mit Servlet und JSP ver Pages. Das Interface HttpService er- Natürlich muss die Spezifikation die möglicht das Registrieren von statischen Geschwindigkeit des technologischen Ressourcen und Servlets. Dabei wird Wandels mit aufnehmen, beispielswei- halten modi ziert werden kann. Eine aus neben der Ressource oder dem Servlet se beim Versionsstand des Http Service. unserer Sicht besonders gelungene Lö- im Wesentlichen ein so genannter Ali- Wer die aktuelle Entwicklung der im sung dieses „Multi-API-Logging“ bietet as übergeben, der dem Servlet Path der Sommer dieses Jahres erwarteten nächs- PAX Logging [3]: Das API Bundle bietet URL entspricht. Listing 3 zeigt den Aus- ten Version 4.2 verfolgt, wird feststellen, das API der meisten gängigen Logging- schnitt einer Service Component, die bei dass sich gerade im Bereich der Enter- Lösungen einschließlich dem OSGi Log der Aktivierung unter dem Alias /hello prise-Technologien auch tatsächlich ein HelloServlet registriert und die Re- eine ganze Menge tut: Transaktionen, gistrierung bei der Deaktivierung wie- Verteilung und Blueprint Service, auch Listing 1 der au ebt. Dadurch kann es unter dem bekannt als Spring Dynamic Modules. <component name=“com.weiglewilczek...shell“> URL http://localhost:8080/hello (Host Wir dürfen gespannt sein! <implementation class=“com.weiglewilczek...Component“/> und Port können natürlich variieren) <service> <provide interface=“org.eclipse...CommandProvider“/> aufgerufen werden. In unserem Beispiel Heiko Seeberger ist als </service> resultiert das in einfachem statischem Technical Director für die <reference name=“contactRepositories“ HTML-Code (Abb. 2). Weigle Wilczek GmbH interface=“com.weiglewilczek...ContactRepository“ tätig. Sein technischer Natürlich wird der Http Service in cardinality=“1..n“/> Schwerpunkt liegt in der dieser Standardversion OSGi nicht zum <reference name=“logService“ Entwicklung von Unterneh- entscheidenden Durchbruch auf dem interface=“org.osgi...LogService“ mensanwendungen mit OSGi, Eclipse Server verhelfen. Dazu fehlen einfach cardinality=“1..1“/> RCP, Spring, AspectJ und Java EE. Sei- ne Erfahrungen aus über zehn Jahren </component> zu viele Features, die von heutigen Web- IT-Beratung und Softwareentwicklung Applications vorausgesetzt werden, z. B. fließen in die Eclipse Training Alliance Servlet Filter und JavaServer Pages. Zum Listing 2 ein. Zudem ist Heiko Seeberger aktiver Glück gibt es einige Erweiterungen, die Committer in Eclipse-Projekten, Autor protected void activate(ComponentContext context) { zahlreicher Fachartikel und Redner auf hier aushelfen. So bietet z. B. Equinox logService = (LogService) context.locateService(“logService“); einschlägigen Konferenzen. logService.log(LogService.LOG_INFO, “Activating ...“); neben einer Standardimplementierung .... auch eine Variante auf Basis von Jetty und Jasper an, die Servlet API 2.4 und Links & Literatur JavaServer Pages 2.0 unterstützt. Noch Listing 3 aktueller ist derzeit PAX Web [5], eben- private static final String HELLO = “/hello“; [1] OSGi-Spezifikation: falls mit gebündeltem Jetty und Support www.osgi.org/Specifications/ protected void activate(ComponentContext context) throws Exception { für Servlet API 2.5 und JavaServer Pages [2] OSGi Service Compendium, httpService = (HttpService) context.locateService(“httpService“); S. 5ff, Log Service Specification 2.1. httpService.registerServlet(HELLO, new HelloServlet(), null, null); [3] PAX Logging: wiki.ops4j.org/ In unserem Beispiel verwenden wir } display/ops4j/Pax+Logging PAX Web, um gemäß Model-2-Design [4] OSGi Service Compendium, S. 17 mit einem Servlet die Kontakte aller protected void deactivate(ComponentContext context) { ff., Http Service Specification ContactRepositories abzufragen und die- httpService.unregister(HELLO); [5] PAX Web: wiki.ops4j.org/display/ se mit einer JSP unter Verwendung von } ops4j/Pax+Web Taglibs anzuzeigen (Abb. 3). Die resul- 16 javamagazin 4|2009 www.JAXenter.de