O'Reilly logo

Die OSGi Service Platform: Eine Einführung mit Eclipse Equinox by Matthias Lübken, Bernd Kolb, Nils Hartmann, Gerd Wütherich

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

23 Das Equinox Application Model412
Schritt 4: Die Extensions definieren
Die beiden Application-Klassen ssen abschließend noch als Exten-
sion für den Extension Point
org.eclipse.core.runtime.applications
spezifiziert werden. Tragen Sie dazu in die Datei plugin.xml folgende
Extension-Definitionen ein:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
<extension id="org.osgibook.helloworld.application.
helloWorldGuiApplication"
point="org.eclipse.core.runtime.applications">
<application>
<run class="org.osgibook.helloworld.application.
HelloWorldGuiApplication">
</run>
</application>
</extension>
<extension id="org.osgibook.helloworld.application.
helloWorldBatchApplication"
point="org.eclipse.core.runtime.applications">
<application>
<run class="org.osgibook.helloworld.application.
HelloWorldBatchApplication">
</run>
</application>
</extension>
</plugin>
Schritt 5: Ausführen des Beispiels
Anlegen der
Launch-Konfiguration
Legen Sie nun eine neue Launch-Konfiguration an, in der Sie neben
den Bundles aus Ihrem Workspace auch die folgenden Bundles aus-
wählen:
org.eclipse.equinox.app
org.eclipse.equinox.common
org.eclipse.equinox.registry
org.eclipse.osgi
Im ersten Schritt soll die von uns entwickelte GUI Application gestar-
tet werden. Ergänzen Sie dazu auf der Seite Arguments die Komman-
dozeilenargumente um das
-application-Argument:
-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl
${target.nl} -application
org.osgibook.helloworld.application.helloWorldGuiApplication
Listing 23–4
Die Datei plugin.xml
41323.2 Das Equinox Application Model im Überblick
Enfernen Sie bitte in den VM arguments außerdem die beiden dort
voreingestellten System Properties
eclipse.ignoreApp und osgi.noShut-
down
.
Ausführen der
GUI Application
Wenn Sie die Launch-Konfiguration ausführen, wird die ausge-
wählte Anwendung gestartet und die Message Box mit dem »Hello
World«-Gruß angezeigt (vgl. Abb. 23.3).
Beachten Sie, dass Eclipse Equinox unmittelbar nach Beenden der
Anwendung durch Bestätigen der Message Box terminiert.
Ausführen der
Batch Application
Um die Batch Application anstatt der GUI Application auszufüh-
ren, müssen Sie auf der Seite Arguments der Launch-Konfiguration das
-application-Argument entsprechend abändern:
-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl
${target.nl} -application
org.osgibook.helloworld.application.helloWorldBatchApplication
Wenn Sie nun die geänderte Launch-Konfiguration ausführen, wird
der »Hello World«-Gruß nicht mehr über die Message Box, sondern
unmittelbar auf der Konsole ausgegeben:
Hallo OSGi-Welt sagt Bundle org.osgibook.helloworld.application!
Auch in diesem Fall terminiert Eclipse Equinox unmittelbar, nachdem
die Anwendung ausgeführt und der Gruß auf die Konsole geschrieben
wurde.
Damit haben Sie gesehen, wie in Eclipse Equinox uinterschiedliche
Anwendungen auf derselben Infrastruktur ausgeführt werden können.
Ein weiteres sehr anschauliches Beispiel zur Verwendung des Equinox
Application Models finden Sie im Übrigen im Eclipse Wiki unter
[ECEQAM].
In den nachfolgenden Unterkapiteln stellen wir Ihnen das Equinox
Application Model im Detail vor.
23.2 Das Equinox Application Model im Überblick
Motivation
Die Ausführung von Anwendungen ist ein zentrales Konzept in Eclipse
Equinox. Eine Anwendung ist in diesem Kontext eine Klasse, die das
Interface
org.eclipse.equinox.app.IApplication implementiert und
Abb. 23–3
Die »Hello World«-
Message Box
23 Das Equinox Application Model414
über den Extension Point org.eclipse.core.runtime.applications als
Extension registriert wird.
Wenn Sie Eclipse Equinox starten, wird zunächst das OSGi Frame-
work gestartet. Mit dem Starten des Frameworks werden alle in der
Framework-Konfiguration angegebenen Bundles installiert und gestar-
tet (vgl. Unterkapitel 11.5). Unmittelbar danach kann eine Anwen-
dung ausgeführt werden, die über einen Startparameter oder ein Sys-
tem-Property konfiguriert wird.
Der Vorteil dieses Modells liegt darin, dass auf ein und derselben
Infrastruktur unterschiedliche Anwendungen ausgeführt werden kön-
nen. So wird bspw. beim Starten der Eclipse IDE die Anwendung
org.eclipse.ui.internal.ide.application.IDEApplication ausgeführt,
die ihrerseit die Eclipse Workbench startet. Alternativ ist es aber auch
möglich, andere Anwendungen wie bspw. den Ant Runner (vgl. Unter-
kapitel 11.4) auszuführen, der auf Basis der (gestarteten) Eclipse-Infra-
struktur automatisierte Build-Läufe realisiert.
Der Eclipse
Application Container
Equinox-Anwendungen können zudem über den Application
Admin Service administriert werden (vgl. Kapitel 20). Dazu stellt
Equinox einen eigenen Application Container bereit, der Bestandteil
des Bundles
org.eclipse.equinox.app ist.
23.3 Equinox-Anwendungen implementieren
23.3.1 Das Interface IApplication
Anwendungen, die über den Equinox Application Container verwaltet
werden sollen, ssen das Interface
org.eclipse.equinox.app.IAppli-
cation implementieren.
package org.eclipse.equinox.app;
public interface IApplication {
public static final Integer EXIT_OK = new Integer(0);
public static final Integer EXIT_RESTART = new Integer(23);
public static final Integer EXIT_RELAUNCH = new Integer(24);
public Object start(IApplicationContext context)
throws Exception;
public void stop();
}
Das IApplication-Interface stellt zwei Methoden zum Starten und
Beenden der Anwendung zur Verfügung, über die der Lebenszyklus
einer Anwendung gesteuert wird:
Listing 23–5
Das Interface
IApplication

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required