Hlavní menu
Nástroje |
UvodDoKomponent.DeclarativeServices HistoryHide minor edits - Show changes to output 05 January 2010, 15:10
by
- Changed lines 15-16 from:
!! Změny DS to:
!! Změny v DS 05 January 2010, 15:09
by
- Changed lines 5-6 from:
TODO: doplnit to:
Je 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 framework V 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 DS Je přidán nový konfigurační soubor. Vedle @@META-INF/MANIFEST.MF@@ je zde ještě @@OSGI-INF/konfSoubor.xml@@. Jméno tohoto konfiguračního souboru není pevně dáno. Využívá se nový namespace, který přímo reprezentuje komponentu - bundle. * @@<implementation>@@: lze určit, jaká je hlavní (spouštěcí) třída => opět se nemusí používat activator. * @@<service>@@: zde se registrují služby * @@<provide>@@: určí na jaké rozhranní se má služba zaregistrovat * @@<property>@@: nastaví property zveřejněné službě * @@<reference>@@: získá a naváže službu na metodu, která si získaný interface dále zpracuje Ukázka: =xml [= <?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> =] 22 December 2009, 13:39
by
- Changed lines 3-4 from:
!! Declarative Services to:
! Declarative Services TODO: doplnit ! Praktická část Changed lines 11-16 from:
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ě osobně plně nevyhovoval). Místo activatorů jsou přítomny komponentové xml soubory, které je nahrazují. to:
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. 17 December 2009, 16:03
by
- Added lines 1-2:
(:include Navigation :) 16 December 2009, 13:06
by
- Changed lines 13-14 from:
Jednoduchá implementace [[HelloWorldDS | HelloWorld]]. Výsledná implementace: Attach:HelloDS to:
Jednoduchá implementace [[HelloWorldDS | HelloWorld]]. Výsledná implementace: Attach:HelloWorldDS 16 December 2009, 13:06
by
- Changed lines 13-24 from:
Jednoduchá implementace [[HelloWorldDS | HelloWorld]]. Výsledná implementace: [[Soubor:HelloDS Příklad [[MessagePrinterDS]] pak dokumentuje jen technologicky specifické problémy. Výsledná implementace: [[Soubor:MessagePrinterDS.zip]] Příklad [[ParkovisteDS]] pak dokumentuje jen technologicky specifické problémy. Výsledná implementace: [[Soubor:ParkovisteDS.zip]] == Poznámky k DS == 1) Jakmile u komponenty registruji <code><service></code>, komponenta se okamžitě stává <code>delayed</code>, což znamená, že nebude nic dělat, dokud někdo nebude registrovanou službu chtít - pak teprve dojde k vytvoření dané komponenty. 2) Pokud chci spouštět komponentu s registrovanou službou okamžitě (mám v ní metodu activate), musím nastavit <code><scr:component immediate="true" ...></code> to:
Jednoduchá implementace [[HelloWorldDS | HelloWorld]]. Výsledná implementace: Attach:HelloDS 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 DS 1) Jakmile u komponenty registruji @@<service>@@, komponenta se okamžitě stává @@delayed@@, což znamená, že nebude nic dělat, dokud někdo nebude registrovanou službu chtít - pak teprve dojde k vytvoření dané komponenty. 2) Pokud chci spouštět komponentu s registrovanou službou okamžitě (mám v ní metodu activate), musím nastavit @@<scr:component immediate="true" ...>@@ 16 December 2009, 13:05
by
- Added lines 1-27:
!! Declarative Services V těchto návodech pracuji s [[http://www.springsource.com/products/sts | 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ě osobně plně nevyhovoval). Místo activatorů jsou přítomny komponentové xml soubory, které je nahrazují. [[TutoriálDeclarativeServices]] na vytvoření nového projektu. Jednoduchá implementace [[HelloWorldDS | HelloWorld]]. Výsledná implementace: [[Soubor:HelloDS Příklad [[MessagePrinterDS]] pak dokumentuje jen technologicky specifické problémy. Výsledná implementace: [[Soubor:MessagePrinterDS.zip]] Příklad [[ParkovisteDS]] pak dokumentuje jen technologicky specifické problémy. Výsledná implementace: [[Soubor:ParkovisteDS.zip]] == Poznámky k DS == 1) Jakmile u komponenty registruji <code><service></code>, komponenta se okamžitě stává <code>delayed</code>, což znamená, že nebude nic dělat, dokud někdo nebude registrovanou službu chtít - pak teprve dojde k vytvoření dané komponenty. 2) Pokud chci spouštět komponentu s registrovanou službou okamžitě (mám v ní metodu activate), musím nastavit <code><scr:component immediate="true" ...></code> 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é :) |