UvodDoKomponent: SpringDM |
from Wiki KIVu |
Je komponentový model spojující spring s OSGi. Hlavní myšlenka je taková, že v prostředí OSGi se budou spouštět bundly, využívající Spring. Nebude zapotřebí activator, služby půjde registrovat a příjimat přímo ve springovém konfiguračním souboru.
Navenek tedy máme starý dobrý OSGi a navíc můžeme při vývoji bundlů máme k dispozici Spring. Je tedy vhodné pročíst si nejprve kapitoly o Springu a OSGi!
Co je v takovém případě framework, může být na první pohled složitější, ale pokud se na Spring DM díváme jako rozšíření k OSGi, pak je vše o dost jednodušší.
Základem budiž libovolný OSGi framework.
K němu přidáme rozšíření - distribuované jako několik OSGi bundlů, které se spustí jako první a připraví tak půdu pro naše Spring DM bundly.
Vzniká nám Spring DM framework.
Jako první věc, vedoucí ke změně OSGi bundlu na Spring DM bundle je přidání Spring konfiguračního souboru. Tento soubor musí být v předem daném adresáři (viz. obrázek níže). Může jich být i více, projdou se postupně všechny.
Abychom mohli spouštět Spring DM bundly, musíme nejprve spustit skupinu bundlů, které nám to umožní. Ten nejdůležitější z nich je extender org.springframework.bundle.osgi.extender
, který konfigurační soubor Spring DM bundlů rozparsuje a zpracuje.
Novinkou je nový namespace, který lze použít a který přidává podporu OSGi. Hlavička Spring DM konfiguračního souboru pak bude vypadat takto:
<?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-2.0.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi-1.0.xsd"> </beans>
Novinkou v tomto namespacu jsou:
<osgi:bundle>
:
<osgi:service>
: slouží k zaregistrování služby
<osgi:reference>
: slouží k získání služby
<osgi:list>
: slouží k získání N služeb (nastavuje se kardinalita)
<osgi:set>
: slouží k získání N služeb (nastavuje se kardinalita)
Dívámeli se na Spring DM tak, jak bylo výše nastíněno, máme jasno v pojmech komponentový model a framework.
Protože je OSGi základ tohoto modelu, tak jsou pojmy jako komponenta a komponentové rozhranní stejné jako u OSGi.
Jediné, co se změnilo je zjednodušená práce se službami a Springové možnosti při vývoji bundlů.
V těchto návodech pracuji s SpringSource Tool Suite, které je trochu odlišné od Eclipsu. Většina věcí je však stejná.
Spring DM není plnohodnotný framework, ale jde o rozšíření OSGi. Spring DM má to nejlepší ze Springu i z OSGi. Při implementaci příkladů jsem vlastně vzal kompletní funkční část z OSGi - ale bez Activatorů. To je vlastně téměř jediný rozdíl v kódu oproti Osgi.
Místo activatorů jsou zde Springové xml soubory.
TutoriálSpringDM na vytvoření nového projektu.
Jednoduchá implementace HelloWorld. Výsledná implementace: Attach:HelloWorldSpringDM a Attach:HelloWorldBlueprint.zip Δ
Příklad MessagePrinterSpringDM pak dokumentuje jen technologicky specifické problémy. Výsledná implementace: Attach:MessagePrinterSpringDM
Příklad ParkovisteSpringDM pak dokumentuje jen technologicky specifické problémy. Výsledná implementace: Attach:ParkovisteSpringDM
Rozšířená implementace: Attach:ParkovisteSpringDMExtended