• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
OSGi, deklaratywnie
 

OSGi, deklaratywnie

on

  • 1,982 views

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

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

Statistics

Views

Total Views
1,982
Views on SlideShare
1,907
Embed Views
75

Actions

Likes
0
Downloads
18
Comments
0

4 Embeds 75

http://code-house.org 69
https://www.linkedin.com 3
http://www.linkedin.com 2
http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    OSGi, deklaratywnie OSGi, deklaratywnie Presentation Transcript

    • 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ści)
    • 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"
    • OSGi oferuje ROZWIĄZANIE
    • Bundle Zawiera Jak wygląda • Nazwę modułu • Wersję • Dostawcę • Eksporty • Jawne zależności Więcej*
    • 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
    • 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;version=[2.0.0,3.1 org.code.bar;version=4.0 .0)
    • 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 String • Przykład 1.4.2.alpha2 • Brak numeru oznacza 0.0.0
    • 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, ∞)
    • 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 korzysta z określonego interfejsu. – Konsumenta z producentem wiąże interfejs.
    • Usługi cd • Brak jakichkolwiek zalezności do OSGi. • Może to byd zwykłe POJO*. • Obsługa dynamicznych usług wymaga nieco kodu.
    • Ułatwienia • OSGi Declarative Services (częśd OSGi) • Spring Dynamic Modules • Blueprint (częśd OSGi R4 enterprise) • Apache Felix iPOJO • Peaberry (Guice)
    • Ułatwienia • OSGi Declarative Services (częśd OSGi) • Spring Dynamic Modules • Blueprint (częśd OSGi R4 enterprise) • Apache Felix iPOJO • Peaberry (Guice)
    • 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 - addingService - getServiceReference - modifiedService - ungetService - removedService ServiceRegistration - unregister
    • 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 – Nadpisanie poprzez nagłówek Spring-Context • Atrybuty Spring-Context – create-asynchronously – wait-for-dependencies – timeout – publish-context
    • 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>
    • 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(); } }
    • Dla futurystów BLUEPRINT
    • 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>
    • Porównanie SPRING DM - BLUEPRINT
    • 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
    • Showtime DEMO SPRING, BLUEPRINT, OSGI
    • Co warto przeczytad LITERATURA
    • 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
    • PYTANIA?