Hlavní menu

Nástroje

UvodDoKomponent / SpringDM

View (print) - Edit page | Recent changes - Page history

Updated 22 January 2015, 15:37 by PremekBrada

Navigace

Spring DM (Dynamic Modules)

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!

Pozn: Od roku 2009 je Spring DM v útlumu. Většina konceptů i konkrétní syntaxe byla převzata do tzv. Blueprint specifikace, která je součástí standardizovaného OSGi Enterprise od verze 5. Jednou z implementací je Apache Aries.

Spring DM Framework

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.

Jak to funguje

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.

Spring DM namespace

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)

Shrnutí

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ů.

Praktická část

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