OSGi Release 4.2, Was ist neu ?
Erst kürzlich wurde von der OSGi Alliance die neue Version 4.2 der OSGi Spezifikation veröffentlicht. Während zum einen die Core-Spezifikation überarbeitet und an aktuelle Anforderungen angepasst wurde, enthält die neue Version besonders Enterprise-spezifische Erweiterung wie z.B. Remote Services. Diese Präsentation wird die wichtigsten Änderungen beschreiben und anhand von Code-Beispielen deren Einsatz zeigen.
8. Multiple Service
Provider Separation
● Mögliche Lösungen
– Services unter verschiedenen Class-Namen
registrieren
– ServiceFactories um das Client Bundle zu
identifizieren
– ServicePermission erweitern
– Verschiedene Package Namen vergeben
– BSN im Import-Package verwenden
– PackagePermission erweitern
9. Multiple Service
Provider Separation
● Mögliche Lösungen
– Services unter verschiedenen Class-Namen
registrieren
– ServiceFactories um das Client Bundle zu
identifizieren
– ServicePermission erweitern
– Verschiedene Package Namen vergeben
– BSN im Import-Package verwenden
– PackagePermission erweitern
10. Multiple Service
Provider Separation
● ServicePermission
– ServicePermission("(location=https://www.acme.com/*)",
GET )
– Mögliche Filter keys
● id – Bundle ID
● location -Bundle Location
● Signer – Bundle Signer
● name – Bundle symbolic name
● @whatever – Service property 'whatever'
11. Multiple Service
Provider Separation
● PackagePermission
– PackagePermission("(location=http://www.acme.com/*",
IMPORT)
– Mögliche Filter keys
● id – Bundle ID
● location -Bundle Location
● Signer – Bundle Signer
● name – Bundle symbolic name
12. Multiple Service
Provider Separation
● Sehr mächtiges Konzept
– Application Model, …
● Setzt Java Security voraus!
13. DENY Permission
● Problem
– Ohne Java Security: alles erlaubt
– Mit Java Security: Alles verboten, explizite
Freigaben
– Sperren von bestimmten Services kaum
möglich
19. Framework Launching
● Standardisierte API zum Starten von OSGi
Frameworks
– Starten/Stoppen
– Konfigurationen
● z.B. org.osgi.framework.system.packages
● Nützlich falls ein Framework in eine Anwendung
eingebettet werden soll
22. Remote Services
● Ehemals „Distributed OSGi“
● Spezifiziert Konfigurationsparameter und
Semantik um Endpoints basierend auf Services
zu erstellen
– Es wird kein konkretes Protokoll verwendet
● RPC-orientiert
– SOAP, RMI, CORBA, …
– Nicht: JMS, MOMs, ...
28. Blueprint Container Spec.
● Dependency Injection Container
● Basiert auf den Konzepten von Spring/Spring-DM
– Diverse Erweiterung wurden im Rahmen der
Spezifizierung vorgenommen
– Referenzimplementierung: Spring-DM
– Zusätzlich: Apache Geronimo Blueprint
IBM, Progress, …
●
● „Pimp my DS“
33. Blueprint Container Spec.
● Service Proxies
Service Impl 1
Service
Bean
Ref Service Impl 2
Service Impl 3
•Proxy zum Service
•Wird automatisch ausgetauscht
34. Blueprint Container Spec.
● Service Ref Lists
Service Impl 1
Service
Bean Ref Service Impl 2
List
Service Impl 3
•Service Liste
•Verändert sich automatisch
•Repräsentiert immer die aktuellen Services
35. Blueprint Container Spec.
● Blueprint Events
– CREATING, CREATED, …
● Framework Unterstützung (Apache Felix Karaf)
ID State Blueprint Level Name
[ 0] [Active ][ ] [ 0] System Bundle (1.9.0.SNAPSHOT)
[ 1] [Active ] [Created ] [ 30] Apache Felix Karaf :: GShell ...
[ 2] [Active ] [Created ] [ 30] Apache Felix Karaf :: GShell ...
[ 3] [Active ] [Created ] [ 30] Apache Felix Karaf :: Spring ...
● Ausblick
– Custom Namespaces
– ConfigAdmin Unterstützung
36. Declarative Services Update
● Service-Component Header unterstützt
Wildcards
– Service-Component: OSGI-INF/*.xml
● Name Attribute von component ist optional
● Fehlermeldungen von DS mit dem LogService
werden über den BundleContext des User-
Bundle erzeugt