Hlavní menu

Nástroje

UvodDoKomponent / MessagePrinterOsgi

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

Updated 22 January 2015, 16:11 by PremekBrada

UvodDoKomponent.MessagePrinterOsgi History

Hide minor edits - Show changes to output

22 January 2015, 16:11 by PremekBrada -
Changed lines 47-48 from:
context.ungetService(context.getServiceReference("cz.zcu.kiv.cosi.msgtalk.IMsgGen"));
to:
context.ungetService(context.getServiceReference("cz.zcu.kiv.cosi.msgtalk.IMsgGen"));
22 January 2015, 16:10 by PremekBrada -
Changed lines 5-6 from:
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.
to:
Základem je samozřejmě rozhraní @@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.
22 January 2015, 16:10 by PremekBrada -
Changed lines 1-2 from:
! MessagePrinter v OSGi
to:
! [=MessagePrinter=] v OSGi
22 January 2015, 16:08 by PremekBrada -
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 Snajberk -
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 Snajberk -
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 Snajberk -
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 Snajberk -
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'''.