Wprowadzenie do OSGi i Spring Dynamic Modules (Spring-DM)

Transkrypt

Wprowadzenie do OSGi i Spring Dynamic Modules (Spring-DM)
Wprowadzenie do
OSGi
i
Spring Dynamic Modules
(Spring-DM)
Jacek Laskowski
http://www.JacekLaskowski.pl
Java Developers Day 2008 – Kraków, 16.10.2008, wersja 1
Prelegent, to kto?
●
Entuzjasta Java EE 5 i OSGi
●
Założyciel i lider Warszawa JUG
●
Uczestnik wielu projektów otwartych, m.in. Spring-DM
●
●
●
●
Członek zespołów Apache Geronimo, Apache OpenEJB,
Apache ServiceMix, Apache ActiveMQ i in.
Członek zespołu NetBeans DreamTeam
Prowadzi Notatnik Projektanta Java EE http://www.JacekLaskowski.pl/
Służbowo: konsultant oprogramowania WebSphere w IBM
OSGi ogólnie
●
●
●
OSGi – Specyfikacja modułów dla Javy
OSGi Alliance ciałem rozwijającym standard
OSGi – http://www.osgi.org
Początkowo specyfikacja dla urządzeń
wbudowanych, później mobilnych, a obecnie
również dla korporacyjnych
●
Środowisko uruchomieniowe pakunków OSGi
●
„Ulepszona ładowarka klas”
●
„Środowisko do zarządzania zależnościami
(wersjonowanie)”
OSGi historycznie
JSR 277
Java Module System
OSGi R4.1
Październik 2006
Czerwiec 2007
JSR 291
OSGi
Open Services Gateway Initiative
JSR 8
22 listopad 1999
Open Services Gateway Specification
22 maj 1999 – 10 maj 1999
OSGi Alliance
Marzec 1999
Dynamic Component Support for Java SE
Sierpień 2007
OSGi technicznie
●
OSGi – Szkielet modułów dla Javy
●
Podstawowy byt OSGi – pakunek
●
Deklaracja wymagań – pakunek to plik jar z
nagłówkami w META-INF/MANIFEST.MF
●
Wersjonowanie – deklarowanie wersji
●
Deklarowane przestrzenie klas pakunków
●
Środowisko pojedynczego JVM
●
Platforma zorientowana na usługi –
odseparowanie dostawcy od klienta z użyciem
Rejestru Usług (SOA?)
OSGi wizualnie
http://www.osgi.org/About/Technology#Framework
Metadane OSGi
●
●
●
Bundle-SymbolicName – *obowiązkowy*
identyfikator pakunku, najczęściej RDNC
Export-Package – pakiety udostępniane przez
pakunek
Import-Package – pakiety wymagane przez
pakunek
●
Bundle-Name – nazwa pakunku
●
Bundle-Activator – aktywator pakunku
●
●
Bundle-Classpath – ścieżka dodatkowych
bibliotek klas
Bundle-ManifestVersion – wersja OSGi
Tworzenie metadanych OSGi
●
●
●
Manualnie – w końcu to jedynie edycja
META-INF/MANIFEST.MF
Automatyczne
–
Bnd – http://www.aqute.biz/Code/Bnd
–
Wtyczka Apache Felix Bundle dla Apache Maven 2
http://felix.apache.org/site/maven-bundle-plugin-bnd.htm
Metafizyczne – wiara w istnienie już
przygotowanych pakunków dla popularnych
projektów
–
OSGi Bundle Repository (ORB)
–
Eclipse Orbit
–
SpringSource Enterprise Bundle Repository
Dostępne platformy OSGi
●
●
●
●
●
Apache Felix – http://felix.apache.org – OSGi
R4.0
Eclipse Equinox – http://eclipse.org/equinox –
OSGi R4.1 (częściowo OSGi R4.2)
Knopflerfish – http://knopflerfish.org – OSGi
R4.0
Concierge – http://concierge.sourceforge.net OSGi R3
Narzędzie „nakładka” – pax-runner
http://wiki.ops4j.org/confluence/display/ops4j/Pax+Run
ner
Niuanse OSGi a Java EE
●
Uruchomienie pakunku jako aplikacji
korporacyjnej możliwe, ale:
–
Kontener w OSGi udostępnia wymagane
biblioteki, a pakunek musi zadeklarować
chęć ich wykorzystania
Import-Package:
javax.servlet,javax.servlet.http,javax.servlet.resources
Bundle-Classpath: .,WEB-INF/classes,WEBINF/lib/some.jar,WEB-INF/lib/lib.jar
–
Kontener – pakunek(i) OSGi lub uruchamia
wbudowane środowisko OSGi
Spring Dynamic Modules
●
●
●
Spring Dynamic Modules for OSGi Service
Platforms (Spring-DM) http://www.springframework.org/osgi
Połączenie cech Spring Framework i OSGi
Uproszczenie tworzenia i uruchamiania aplikacji
springowych w środowisku OSGi
–
Pakunki springowe
–
Rozgłaszanie usług springowych
–
Integracja z kontenerami webowymi
●
Znajomość Spring Framework zalecana
●
Wersja produkcyjna – 1.2.0 M1
Spring-DM i Spring Framework
●
●
Tworzenie pakunków będącymi de facto
ziarnami springowymi
Brak zależności od pakietów OSGi
–
Można „związać się” z ziarnem bundleContext
●
Nagłówek Spring-Context w MANIFEST.MF
●
Konfiguracja pakunków w „beans.xml”
osgi:service
– osgi:reference
– osgi:listener
„beans.xml” w META-INF/spring/*.xml
–
●
Spring-DM w beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:osgi="http://www.springframework.org/schema/osgi"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/osgi
http://www.springframework.org/schema/osgi/spring-osgi.xsd">
<bean id="weatherService"
class="org.springframework.osgi.samples.weather.service.WeatherServiceImpl">
<property name="weatherDao">
<osgi:reference interface="org.springframework.osgi.samples.weather.dao.WeatherDao"/>
</property>
</bean>
<osgi:service ref="weatherService">
<osgi:interfaces>
<value>org.springframework.osgi.samples.weather.service.WeatherService</value>
</osgi:interfaces>
<osgi:service-properties>
<entry key="foo" value="bar"/>
<entry key="baz" value="myprop"/>
</osgi:service-properties>
</osgi:service>
</beans>
Spring-DM wizualnie
http://static.springframework.org/osgi/docs/current/reference/html/app-deploy.html
Praktycznie o OSGi i Spring-DM
●
Przykłady dostępne na stronach Apache Felix
http://felix.apache.org/site/apache-felix-osgi-tutorial.html
●
●
Przykłady dystrybuowane w ramach Spring-DM
katalog src/samples
Zobaczmy kilka w działaniu...
Lektura o OSGi i Spring-DM
●
Spring Dynamic Modules Reference Guide
http://static.springframework.org/osgi/docs/current/reference/html/
●
Getting Started with OSGi
http://neilbartlett.name/blog/osgi-articles/
●
Pro Spring Dynamic Modules for OSGi™
Service Platforms
http://www.apress.com/book/view/1430216123
●
Tutorial for Spring Dynamic Modules (DM) for
OSGi™ Service Platforms
http://springosgi.googlepages.com/
●
Hello, OSGi, Part 1: Bundles for beginners
http://www.javaworld.com/javaworld/jw-03-2008/jw-03-osgi1.html
●
...i wiele, wiele innych.
Pytania?
Słucham?
Zapraszam na
http://www.JacekLaskowski.pl

Podobne dokumenty