OSGi
deklaratywnie




   OSGi, Spring DM oraz Blueprint w
                 akcji
Cel
Przedstawid OSGi oraz deklaratywny model
             komponentowy
Agenda
•   Wprowadzenie do OSGi
•   Dynamika w OSGi
•   Spring DM
•   Blueprint
OSGi to inicjatywa modularyzacji oprogramowania

WPROWADZENIE DO OSGI
JAR/WAR/EAR nie jest modułem, jest to

DEPLOYMENT UNIT
JAR
          Nie zawiera       Jak wygląda
•   Nazwy modułu
•   Wersji
•   Dostawcy
•   Eksportów
•   Importów (zależnośc...
Zależności
• JAR ma zależności
• Są one domniemane
• Są one podstawą do założeo:
  "Zakładam, że JAR X (wersja Y) jest dos...
OSGi oferuje

ROZWIĄZANIE
Bundle
              Zawiera   Jak wygląda
•   Nazwę modułu
•   Wersję
•   Dostawcę
•   Eksporty
•   Jawne zależności

   ...
Manifest
Manifest-Version: 1.0
Export-Package: org.code_house.samples.osgi.api
Built-By: Code-House
Tool: Bnd-0.0.357
Bund...
Bundle


JEST PRZENOŚNY
Zależności
Jak powstaje graf
  Importy                Eksporty
• org.code.bar       • org.code.foo
• org.code.baz       • org.code.faz
Wiązanie

 org.code.bar
Wiązanie

 org.code.bar   org.code.bar
Manifesty
Bundle A                       Bundle B
Import-Package: org.code.bar   Export-Package: org.code.bar
Wiązanie

 org.code.bar   org.code.bar
Wersje

org.code.bar
[2.0.0,3.1.0)
Wersje

org.code.bar    org.code.bar
[2.0.0,3.1.0)   4.0
Manifesty
Bundle A                          Bundle B
Import-Package:                   Export-Package:
org.code.bar;versio...
Wersje

org.code.bar    org.code.bar
[2.0.0,3.1.0)   4.0
Wersje
org.code.bar    org.code.bar
[2.0.0,3.1.0)   2.5.1




org.code.bar    org.code.bar
[3.2.0,5.0.0)   3.2
Wersje
org.code.bar    org.code.bar
[2.0.0,3.1.0)   2.5.1




org.code.bar    org.code.bar
[3.2.0,5.0.0)   3.2
Bundle


MOŻE COŚ UKRYD
Widocznośd
• W OSGi funkcjonuje pojęcie Private-Package.
• Wszystkie paczki, które nie są eksportowane są prywatne.
Standaryzacja idzie dalej


NUMEROWANIE WERSJI
Numerowanie
        wersji
•   Major . Minor . Micro . Qualifier
•   Pierwsze trzy to zawsze numery
•   Qualifier to Strin...
Zakresy wersji
• Otwarte, zamknięte, domniemane
• [1.0.0, 2.0.0]
   – 1.0.0 <= version <= 2.0.0
   – Wersje 1.0.0 oraz 2.0...
Interakcje pomiędzy komponentami, czyli

DYNAMIKA W OSGI
Stany Bundle’a w OSGi i przejścia
Usługi
•   Oparte na interfejsach.
•   OSGi dostarcza ServiceRegistry.
•   Producent implementuje Interfejs.
•   Konsument...
Usługi cd
• Brak jakichkolwiek zalezności do OSGi.
• Może to byd zwykłe POJO*.
• Obsługa dynamicznych usług wymaga nieco
 ...
Ułatwienia
•   OSGi Declarative Services (częśd OSGi)
•   Spring Dynamic Modules
•   Blueprint (częśd OSGi R4 enterprise)
...
Ułatwienia
•   OSGi Declarative Services (częśd OSGi)
•   Spring Dynamic Modules
•   Blueprint (częśd OSGi R4 enterprise)
...
Każdy z wymienionych frameworków może byd użyty z innym, ponieważ

BAZUJE NA SERVICE REGISTRY OSGI
Dynamika
Zarządzanie usługami    Śledzenie usług
BundleContext           ServiceTrackerCustomizer
- registerService       ...
Dynamika cd
BundleTracker
- addingBundle
- modifiedBundle
- removedBundle
Dla pragmatyków i tradycjonalistów

SPRING DYNAMIC MODULES
Spring DM
        podstawy
• Standardowy XML + przestrzenie nazw
• Lokalizacja:
   – Domyślna: META-INF/spring/*.xml
   – ...
Spring DM
       przykład
...
xmlns:osgi=http://www.springframework.org/schema/osgi
...
<osgi:service ref="fileMbox"
    i...
Kod Java
private ServiceRegistration mailbox;

public void start(BundleContext context) throws Exception {
    Hashtable p...
Dla futurystów

BLUEPRINT
Blueprint
        przykład
...
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
...
<service ref="fixedMbox„
    interfa...
Porównanie

SPRING DM - BLUEPRINT
Porównanie
Feature                 Spring DM   Blueprint
Constructor injection   Tak         Tak
Setter injection        T...
Showtime

DEMO SPRING, BLUEPRINT, OSGI
Co warto przeczytad

LITERATURA
Literatura
• Dokumentacja Spring DM
  http://static.springsource.org/osgi/docs/
• Specyfikacja OSGi Blueprint
• Developer ...
PYTANIA?
Upcoming SlideShare
Loading in …5
×

OSGi, deklaratywnie

1,772 views
1,663 views

Published on

Slajdy z prezentacji Warszawa JUG, która odbyła się 15 czerwca 2010.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,772
On SlideShare
0
From Embeds
0
Number of Embeds
88
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

OSGi, deklaratywnie

  1. 1. OSGi deklaratywnie OSGi, Spring DM oraz Blueprint w akcji
  2. 2. Cel Przedstawid OSGi oraz deklaratywny model komponentowy
  3. 3. Agenda • Wprowadzenie do OSGi • Dynamika w OSGi • Spring DM • Blueprint
  4. 4. OSGi to inicjatywa modularyzacji oprogramowania WPROWADZENIE DO OSGI
  5. 5. JAR/WAR/EAR nie jest modułem, jest to DEPLOYMENT UNIT
  6. 6. JAR Nie zawiera Jak wygląda • Nazwy modułu • Wersji • Dostawcy • Eksportów • Importów (zależności)
  7. 7. Zależności • JAR ma zależności • Są one domniemane • Są one podstawą do założeo: "Zakładam, że JAR X (wersja Y) jest dostępny, inaczej nie zadziałam"
  8. 8. OSGi oferuje ROZWIĄZANIE
  9. 9. Bundle Zawiera Jak wygląda • Nazwę modułu • Wersję • Dostawcę • Eksporty • Jawne zależności Więcej*
  10. 10. Manifest Manifest-Version: 1.0 Export-Package: org.code_house.samples.osgi.api Built-By: Code-House Tool: Bnd-0.0.357 Bundle-Name: OSGi Sample :: API Created-By: Apache Maven Bundle Plugin Bundle-Vendor: Code-House Bundle-Version: 1.0.0.SNAPSHOT Build-Jdk: 1.6.0_20 Bnd-LastModified: 1276540580737 Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.code-house.samples.api
  11. 11. Bundle JEST PRZENOŚNY
  12. 12. Zależności
  13. 13. Jak powstaje graf Importy Eksporty • org.code.bar • org.code.foo • org.code.baz • org.code.faz
  14. 14. Wiązanie org.code.bar
  15. 15. Wiązanie org.code.bar org.code.bar
  16. 16. Manifesty Bundle A Bundle B Import-Package: org.code.bar Export-Package: org.code.bar
  17. 17. Wiązanie org.code.bar org.code.bar
  18. 18. Wersje org.code.bar [2.0.0,3.1.0)
  19. 19. Wersje org.code.bar org.code.bar [2.0.0,3.1.0) 4.0
  20. 20. Manifesty Bundle A Bundle B Import-Package: Export-Package: org.code.bar;version=[2.0.0,3.1 org.code.bar;version=4.0 .0)
  21. 21. Wersje org.code.bar org.code.bar [2.0.0,3.1.0) 4.0
  22. 22. Wersje org.code.bar org.code.bar [2.0.0,3.1.0) 2.5.1 org.code.bar org.code.bar [3.2.0,5.0.0) 3.2
  23. 23. Wersje org.code.bar org.code.bar [2.0.0,3.1.0) 2.5.1 org.code.bar org.code.bar [3.2.0,5.0.0) 3.2
  24. 24. Bundle MOŻE COŚ UKRYD
  25. 25. Widocznośd • W OSGi funkcjonuje pojęcie Private-Package. • Wszystkie paczki, które nie są eksportowane są prywatne.
  26. 26. Standaryzacja idzie dalej NUMEROWANIE WERSJI
  27. 27. Numerowanie wersji • Major . Minor . Micro . Qualifier • Pierwsze trzy to zawsze numery • Qualifier to String • Przykład 1.4.2.alpha2 • Brak numeru oznacza 0.0.0
  28. 28. Zakresy wersji • Otwarte, zamknięte, domniemane • [1.0.0, 2.0.0] – 1.0.0 <= version <= 2.0.0 – Wersje 1.0.0 oraz 2.0.0 są w zakresie • (1.0.0, 2.0.0) – 1.0.0 < version < 2.0.0 – Wartości graniczne nie są w zakresie • 1 – *1.0.0 , ∞) • Brak wersji – *0.0.0, ∞)
  29. 29. Interakcje pomiędzy komponentami, czyli DYNAMIKA W OSGI
  30. 30. Stany Bundle’a w OSGi i przejścia
  31. 31. Usługi • Oparte na interfejsach. • OSGi dostarcza ServiceRegistry. • Producent implementuje Interfejs. • Konsument korzysta z określonego interfejsu. – Konsumenta z producentem wiąże interfejs.
  32. 32. Usługi cd • Brak jakichkolwiek zalezności do OSGi. • Może to byd zwykłe POJO*. • Obsługa dynamicznych usług wymaga nieco kodu.
  33. 33. Ułatwienia • OSGi Declarative Services (częśd OSGi) • Spring Dynamic Modules • Blueprint (częśd OSGi R4 enterprise) • Apache Felix iPOJO • Peaberry (Guice)
  34. 34. Ułatwienia • OSGi Declarative Services (częśd OSGi) • Spring Dynamic Modules • Blueprint (częśd OSGi R4 enterprise) • Apache Felix iPOJO • Peaberry (Guice)
  35. 35. Każdy z wymienionych frameworków może byd użyty z innym, ponieważ BAZUJE NA SERVICE REGISTRY OSGI
  36. 36. Dynamika Zarządzanie usługami Śledzenie usług BundleContext ServiceTrackerCustomizer - registerService - addingService - getServiceReference - modifiedService - ungetService - removedService ServiceRegistration - unregister
  37. 37. Dynamika cd BundleTracker - addingBundle - modifiedBundle - removedBundle
  38. 38. Dla pragmatyków i tradycjonalistów SPRING DYNAMIC MODULES
  39. 39. Spring DM podstawy • Standardowy XML + przestrzenie nazw • Lokalizacja: – Domyślna: META-INF/spring/*.xml – Nadpisanie poprzez nagłówek Spring-Context • Atrybuty Spring-Context – create-asynchronously – wait-for-dependencies – timeout – publish-context
  40. 40. Spring DM przykład ... xmlns:osgi=http://www.springframework.org/schema/osgi ... <osgi:service ref="fileMbox" interface="org.code_house.samples.osgi.api.Mailbox"> <osgi:service-properties> <entry key="MB-Name" value="directory: d:/data" /> </osgi:service-properties> </osgi:service>
  41. 41. Kod Java private ServiceRegistration mailbox; public void start(BundleContext context) throws Exception { Hashtable properties = new Hashtable(); properties.put("MB-Name", "directory: data"); TextFilesMailbox service = new TextFilesMailbox(); // set properties mailbox = context.registerService( Mailbox.class.getCanonicalName(), service, properties); } public void stop(BundleContext context) throws Exception { if (mailbox != null) { mailbox.unregister(); } }
  42. 42. Dla futurystów BLUEPRINT
  43. 43. Blueprint przykład ... xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" ... <service ref="fixedMbox„ interface="org.code_house.samples.osgi.api.Mailbox"> <service-properties> <entry key="MB-Name" value="fixed" /> </service-properties> </service>
  44. 44. Porównanie SPRING DM - BLUEPRINT
  45. 45. Porównanie Feature Spring DM Blueprint Constructor injection Tak Tak Setter injection Tak Tak Field injection Tak Nie Autowiring Tak Nie Lazy-init Tak Tak Bean scopes Tak Tak Custom initialization Tak Tak
  46. 46. Showtime DEMO SPRING, BLUEPRINT, OSGI
  47. 47. Co warto przeczytad LITERATURA
  48. 48. Literatura • Dokumentacja Spring DM http://static.springsource.org/osgi/docs/ • Specyfikacja OSGi Blueprint • Developer works http://www.ibm.com/developerworks/opensource/library/os- osgiblueprint/index.html • OSGi in Action (Manning) http://www.manning.com/hall/ • Spring Dynamic Modules in Action http://www.manning.com/cogoluegnes/ • Modular Java http://pragprog.com/titles/cwosg/modular-java
  49. 49. PYTANIA?

×