Hlavní menu
Nástroje |
UvodDoKomponent.MessagePrinterOsgi HistoryShow minor edits - Show changes to output 22 January 2015, 16:10
by
- Changed lines 1-2 from:
! MessagePrinter v OSGi to:
! [=MessagePrinter=] v OSGi 22 January 2015, 16:08
by
- Changed lines 17-20 from:
=java122 [= Export-Package: cz.zcu.kiv.cosi.msgtalk =] to:
Export-Package: cz.zcu.kiv.cosi.msgtalk Changed line 36 from:
=java122 [= to:
Changed lines 43-44 from:
=] to:
Deleted line 46:
=java122 [= Changed lines 48-49 from:
=] to:
Changed lines 57-60 from:
=java122 [= Import-Package: cz.zcu.kiv.cosi.msgtalk, =] to:
Import-Package: cz.zcu.kiv.cosi.msgtalk, Deleted line 66:
=java122 [= Changed lines 72-73 from:
=] to:
16 December 2009, 14:32
by
- Changed lines 46-51 from:
Při ukončování je pak slušností odhlásit službu, tedy v metodě <code>stop()</code> bude následující řádka: <source>context.ungetService(context.getServiceReference("cz.zcu.kiv.cosi.msgtalk.IMsgGen"));</source> == Klient == to:
Při ukončování je pak slušností odhlásit službu, tedy v metodě @@stop()@@ bude následující řádka: =java122 [= context.ungetService(context.getServiceReference("cz.zcu.kiv.cosi.msgtalk.IMsgGen")); =] !! Klient Changed lines 56-60 from:
=== Import package === V MANIFESTu se musí přidat import package, aby měl klient přístup k rozhranní <code>IMsgGen</code>. <source> to:
!!! Import package V MANIFESTu se musí přidat import package, aby měl klient přístup k rozhranní @@IMsgGen@@. =java122 [= Changed lines 62-63 from:
</source> to:
=] Changed lines 66-69 from:
=== Activator === Abychom získali službu, musíme nejdříve získat referenci, to provedeme voláním metody <code>getServiceReference()</code> a díky referenci můžeme získat již přímo službu voláním metody <code>getService()</code>. to:
!!! Activator Abychom získali službu, musíme nejdříve získat referenci, to provedeme voláním metody @@getServiceReference()@@ a díky referenci můžeme získat již přímo službu voláním metody @@getService()@@. Changed line 72 from:
<source> to:
=java122 [= Changed lines 78-81 from:
</source> === Spuštění === to:
=] !!! Spuštění 16 December 2009, 14:30
by
- Changed lines 5-14 from:
Základem je samozřejmě rozhranní <code>IMsgGen</code> jako ve Springové implementaci [[MessagePrinterSpring]]. Práce s OSGi v Eclipsu (STS) je na této úrovni velice příjemná, protože Eclipse napovídá řešení a je schopný modifikovat MANIFEST, dle potřeby. == Server == Rozhranní <code>IMsgGen</code> je definováno v serverové části a díky exportu je přístupné i u klienta. Implementace tohoto rozhranní je velice primitivní a zajímavý pak už může být pouze Activator. Ten službu zaregistruje a vypíše hlášku o startu - server běží. === Export package === V MANIFESTu se musí přidat export package, aby měl klient přístup k rozhranní <code>IMsgGen</code>. to:
Základem je samozřejmě rozhranní @@IMsgGen@@ jako ve Springové implementaci [[MessagePrinterSpring]]. Práce s OSGi v Eclipsu (STS) je na této úrovni velice příjemná, protože Eclipse napovídá řešení a je schopný modifikovat MANIFEST, dle potřeby. !! Server Rozhranní @@IMsgGen@@ je definováno v serverové části a díky exportu je přístupné i u klienta. Implementace tohoto rozhranní je velice primitivní a zajímavý pak už může být pouze Activator. Ten službu zaregistruje a vypíše hlášku o startu - server běží. !!! Export package V MANIFESTu se musí přidat export package, aby měl klient přístup k rozhranní @@IMsgGen@@. Changed line 17 from:
<source> to:
=java122 [= Changed lines 19-20 from:
</source> to:
=] Changed lines 23-24 from:
=== Activator === to:
!!! Activator Changed lines 27-32 from:
1) Vytvoříme instanci <code>IMsgGen</code> 2) Tuto službu zaregistrujeme pomocí metody <code>registerService()</code>. Jako první parametr je název rozhranní, které vytvořená třída implementuje. To se používá z důvodu nezávislosti na implementaci. Klient bude vždy chtít službu zaregistrovanou pod jménem <code>cz.zcu.kiv.cosi.msgtalk.IMsgGen</code>. A server může zaregistrovat buď tuto implementaci <code>MsgGenImpl</code>, nebo úplně jinou <code>MsgGenAnotherImpl</code>. to:
1) Vytvoříme instanci @@IMsgGen@@ 2) Tuto službu zaregistrujeme pomocí metody @@registerService()@@. Jako první parametr je název rozhranní, které vytvořená třída implementuje. To se používá z důvodu nezávislosti na implementaci. Klient bude vždy chtít službu zaregistrovanou pod jménem @@cz.zcu.kiv.cosi.msgtalk.IMsgGen@@. A server může zaregistrovat buď tuto implementaci @@MsgGenImpl@@, nebo úplně jinou @@MsgGenAnotherImpl@@. Changed line 37 from:
<source> to:
=java122 [= Changed lines 44-45 from:
</source> to:
=] 16 December 2009, 14:28
by
- Changed lines 1-4 from:
= MessagePrinter v OSGi = V tomto tutoriálu se používá [http://www.springsource.com/products/sts SpringSource Tool Suite]. to:
! MessagePrinter v OSGi V tomto tutoriálu se používá [[http://www.springsource.com/products/sts | SpringSource Tool Suite]]. 16 December 2009, 13:28
by
- Added lines 1-82:
= MessagePrinter v OSGi = V tomto tutoriálu se používá [http://www.springsource.com/products/sts SpringSource Tool Suite]. Základem je samozřejmě rozhranní <code>IMsgGen</code> jako ve Springové implementaci [[MessagePrinterSpring]]. Práce s OSGi v Eclipsu (STS) je na této úrovni velice příjemná, protože Eclipse napovídá řešení a je schopný modifikovat MANIFEST, dle potřeby. == Server == Rozhranní <code>IMsgGen</code> je definováno v serverové části a díky exportu je přístupné i u klienta. Implementace tohoto rozhranní je velice primitivní a zajímavý pak už může být pouze Activator. Ten službu zaregistruje a vypíše hlášku o startu - server běží. === Export package === V MANIFESTu se musí přidat export package, aby měl klient přístup k rozhranní <code>IMsgGen</code>. Zápis vypadá následovně: <source> Export-Package: cz.zcu.kiv.cosi.msgtalk </source> Ale je přístupný i přes GUI manifestu, záložka '''Runtime'''. V oblasti '''Exported Packages''' tlačítko '''Add''' a vybrat pomocí GUI. === Activator === V následujícím příkladu je vidět spuštění serveru: 1) Vytvoříme instanci <code>IMsgGen</code> 2) Tuto službu zaregistrujeme pomocí metody <code>registerService()</code>. Jako první parametr je název rozhranní, které vytvořená třída implementuje. To se používá z důvodu nezávislosti na implementaci. Klient bude vždy chtít službu zaregistrovanou pod jménem <code>cz.zcu.kiv.cosi.msgtalk.IMsgGen</code>. A server může zaregistrovat buď tuto implementaci <code>MsgGenImpl</code>, nebo úplně jinou <code>MsgGenAnotherImpl</code>. Jako druhý je aktivní objekt. A jako třetí je tabulka parametrů, v tomto případě prázdná. <source> public void start(BundleContext context) throws Exception { System.out.println("Starting server..."); msgGen = new MsgGenImpl(); context.registerService("cz.zcu.kiv.cosi.msgtalk.IMsgGen", msgGen, new Hashtable()); System.out.println("MsgGen registered..."); } </source> Při ukončování je pak slušností odhlásit službu, tedy v metodě <code>stop()</code> bude následující řádka: <source>context.ungetService(context.getServiceReference("cz.zcu.kiv.cosi.msgtalk.IMsgGen"));</source> == Klient == Abychom mohli pracovat, musíme nejprve importovat package, který obsahuje rozhranní <code>IMsgGen</code>. Pak budeme už jen zkoušet v Activatoru zavolat službu registrovanou na tento interface. === Import package === V MANIFESTu se musí přidat import package, aby měl klient přístup k rozhranní <code>IMsgGen</code>. <source> Import-Package: cz.zcu.kiv.cosi.msgtalk, </source> Ale je přístupný i přes GUI manifestu, záložka '''Dependencies'''. V oblasti '''Imported Packages''' tlačítko '''Add''' a vybrat pomocí GUI. === Activator === Abychom získali službu, musíme nejdříve získat referenci, to provedeme voláním metody <code>getServiceReference()</code> a díky referenci můžeme získat již přímo službu voláním metody <code>getService()</code>. To je vše k získání služby, s kterou se již může pracovat dál. <source> public void start(BundleContext context) throws Exception { msgGen = (IMsgGen) context.getService(context.getServiceReference("cz.zcu.kiv.cosi.msgtalk.IMsgGen")); System.out.println("client started..."); System.out.println(msgGen.getMsg()); } </source> === Spuštění === V '''Run configurations ...''' je třeba zaškrtnout oba klienty Server i Klient a nastavit Serveru, aby se spouštěl před Klientem, tedy '''Start level''' menší než u Serveru. V Eclipsu i STS je defaultně Start level na 4, dá se změnit u '''Default start level'''. |