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 markup

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:
to:

MessagePrinter v OSGi

22 January 2015, 16:08 by PremekBrada -
Changed lines 17-20 from:

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564
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:

Deprecated: Function call_user_method() is deprecated in /home/system/www/apache/wiki.kiv.zcu.cz/cookbook/beautifier/php/Beautifier/Core.php on line 564
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:

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á 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.