Hlavní menu
Nástroje |
UvodDoKomponent.MessagePrinterDS HistoryHide minor edits - Show changes to output 16 December 2009, 15:04
by
- Added lines 1-44:
!! Message Printer v Declarative Services Implementace v DS vychází z [[MessagePrinterOsgi]]. Odstranili jsme ale Activatory a přidali jsme komponentové definiční soubory. !!! Serverový definiční soubor Abychom mohli v OSGi zaregistrovat službu pomocí DS, musíme udělat dva kroky: 1) Vytvořit si komponentový definiční soubor pro implementaci konkrétního rozhranní 2) Pomocí tagu @@<service>@@ implementaci zaregistrovat jako službu na rozhranní: * @@<provide interface="rozhranní"/>@@ Tato registrace je tedy ještě jednodušší než ve Spring DM. =java122 [= <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="MessagePrinterDSServer"> <implementation class="cz.zcu.kiv.cosi.msgtalk.server.MsgGenImpl"/> <service> <provide interface="cz.zcu.kiv.cosi.msgtalk.IMsgGen"/> </service> </scr:component> =] !!! Klientský konfigurační soubor Protože chceme získat službu, která je zaregistrovaná na rozhranní @@cz.zcu.kiv.cosi.msgtalk.IMsgGen@@ použijeme notaci @@<reference interface="cz.zcu.kiv.cosi.msgtalk.IMsgGen" ...>@@ s následujícími důležitými atributy: * @@cardinality="1..1"@@ určuje kardinalitu, viz. níže * @@bind="run"@@ funguje jako injection: tedy volá metodu, která musí mít jeden parametr odpovídajícího rozhranní * @@policy="static"@@ může nabývat hodnot '''static''' a '''dynamic''', konkrétní význam se mi nepodařilo vysledovat, pro více informací Google Cardinality určuje vazbu mezi definovanou komponentou a referenční komponentou. První číslo určuje zda musí být referenční komponenta již definována, či nám na tom nezáleží. Druhé číslo definuje kolik referenčních komponent chceme - zda jednu, nebo víc. * 0..1: optional and singular, "zero or one" * 1..1: mandatory and singular, "exactly one" * 0..n: optional and multiple, "zero to many" * 1..n: mandatory and multiple, "one to many" or "at least one" =java122 [= <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="MessagePrinterDSClient"> <implementation class="cz.zcu.kiv.cosi.msgtalk.client.Client"/> <reference bind="run" cardinality="1..1" interface="cz.zcu.kiv.cosi.msgtalk.IMsgGen" name="MsgGen" policy="static" /> </scr:component> =] |