Hlavní menu
Nástroje |
NavigaceDeclarative ServicesJe nejpodobnější Spring DM. Myšlenkou Declarative Services je rozšíření OSGi, aby byla jednodušší správa služeb. DS nám rovněž ve snadno přístupném konfiguračním souboru odkrývá všechny služby, které zveřejňuje a které potřebuje. Je vhodné přečíst si kapitoly o Springu a OSGi DS frameworkV tomto případě už snad ani nejde mluvit o frameworku jako u Spring DM. DS nám totiž poskytuje pouze lepší práci se službami. Mluvme tedy o DS jako o rozšíření OSGi frameworku. V tomto případě tedy můžeme vynechat i všechny další komponentové pojmy, protože ty zůstávají stejné jako u OSGi. Změny v DSJe přidán nový konfigurační soubor. Vedle Využívá se nový namespace, který přímo reprezentuje komponentu - bundle.
Ukázka: <?xml version="1.0" encoding="UTF-8"?> <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" enabled="true" immediate="true" name="ParkovisteDSPult"> <implementation class="cz.zcu.kiv.cosi.parkoviste.pult.Pult"/> <service> <provide interface="org.osgi.service.event.EventHandler"/> </service> <property name="event.topics" value="parkoviste/*"/> <reference bind="setStatistika" cardinality="1..1" interface="cz.zcu.kiv.cosi.parkoviste.brana.IPrijeloOdjelo" name="IPrijeloOdjelo" policy="dynamic"/> </scr:component> Praktická částV 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á. Declarative services není plnohodnotný framework, ale pouze rozšíření OSGi. Při implementaci příkladů jsem vzal kompletní funkční část z OSGi - ale bez Activatorů. To je vlastně téměř jediný rozdíl v kódu oproti Osgi. Declarative Services umí vlastně úplně to samé jako SpringDM, pouze používá jiný přístup. Místo activatorů jsou zde komponentové xml soubory. TutoriálDeclarativeServices na vytvoření nového projektu. Jednoduchá implementace HelloWorld. Výsledná implementace: Attach:HelloWorldDS Příklad MessagePrinterDS pak dokumentuje jen technologicky specifické problémy. Výsledná implementace: Attach:MessagePrinterDS Příklad ParkovisteDS pak dokumentuje jen technologicky specifické problémy. Výsledná implementace: Attach:ParkovisteDS Poznámky k DS1) Jakmile u komponenty registruji 2) Pokud chci spouštět komponentu s registrovanou službou okamžitě (mám v ní metodu activate), musím nastavit 3) Je třeba si dávat pozor, na obsah definičního souboru - každá drobnost může způsobit nefunkčnost a nehlásí žádnou chybu. 4) I když je nastaven okamžitý start u komponenty, která registruje službu (například EventHandler?), služba se prostě nezaregistruje. Něco takového asi prostě není možné :) |