This page (revision-3) was last changed on 28-Oct-2012 22:46 by ThomasBayen 

This page was created on 28-Oct-2012 15:55 by ThomasBayen

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
3 28-Oct-2012 22:46 4 KB ThomasBayen to previous Links verbessert
2 28-Oct-2012 17:13 4 KB ThomasBayen to previous | to last Einige Links hinzugefügt
1 28-Oct-2012 15:55 2 KB ThomasBayen to last Übersicht und Links zur OSGI Programmierung

Page References

Incoming links Outgoing links

Version management

Difference between version and

[http://de.wikipedia.org/wiki/OSGi OSGI] ist ein Komponentenmodell in [Java] sowie eine dazugehörige Plattform-Definition.

Der bekannteste Vertreter einer OSGI-Applikation ist [Eclipse]. Dessen Plug-In System basiert komplett auf OSGI. Außerdem ist die Weiterentwicklung des OSGI-Standards auch in Richtung Desktop-Applikationen wesentlich von Eclipse und dem dort entwickelten Framework '''Equinox''' beeinflusst worden. Equinox stellt daher für normale Applikationen sowas wie die Standard-Implementierung von OSGI dar (zumindest bezieht sich sehr viel Dokumentation hierauf).

In einem laufenden OSGI-Framework können abgeschlossene Module - sogenannte '''OSGI-Bundles''' - jederzeit geladen und wieder entfernt werden. Jedes Bundle definiert dabei eigene Abhängigkeiten von anderen Bundles sowie eigene Schnittstellen, durch die es mit anderen Bundles kommunizieren kann. Dabei sorgt das Framework dafür, das einzelne Bundles auch wirklich nur die definierten Bundles und APIs zu sehen bekommen. So ist eine klare Trennung verschiedener Komponenten und eine klare Schnittstelle sichergestellt.


== Dokumentation zu OSGI ==

Leider ist es gar nicht so einfach, vernünftige Dokumentation zum Thema zu finden. Deshalb hier eine Liste von Artikeln, die mir weitergeholfen haben:

* [http://it-republik.de/jaxenter/artikel/Das-OSGi-Framework-2221.html[http://it-republik.de/jaxenter/artikel/Das-OSGi-Framework-2222.html>> <<grundlegendergrundlegende>> <<Artikel],Artikel>> <<darüber, >>was OSGI überhaupt <<istist]
* Artikel zu ersten Schritten mit Eclipse, Equinox und OSGI:
** [http://it-republik.de/jaxenter/artikel/Erste-Schritte-mit-OSGi-2077.html deutsch], kurz aber ausreichend für ein erstes Hello World
** [http://www.javacodegeeks.com/2012/01/osgi-introduction.html englisch] recht ausführlich bis zum Hello World
*
<<Artikel über [http://www.vogella.com/articles/EclipseExtensionPoint/article.html Extension Points]
*
IBM-Artikel über die [http://www.ibm.com/developerworks/library/os-ecl-osgiconsole/index.html OSGI Console]
* [http://it-republik.de/jaxenter/artikel/Von-alten-Konsolen-Affen-und-seltsamen-Schleifen-4093.html eigene Kommandos in die OSGI Console einbinden] - enthält auch interessante Einblicke, wie der Autor in der Fülle der Eclipse-Bundles den richtigen Service findet.
* Ein Artikel über das [http://codescale.wordpress.com/2009/05/22/basics-about-osgi-classloading/ classloading] beleuchtet die wichtigste Grundlage, auf der die Trennung von Modulen basiert: Die eigenen ~ClassLoader des OSGI Frameworks.
* [http://www.eclipse.org/equinox/documents/quickstart.php Equinox Dokumentation]
* Forumseintrag über [http://stackoverflow.com/questions/4673406/programatically-start-osgi-equinox Starten des Frameworks und einzelner Bundles aus Java-Code heraus]

== Tips und Tricks ==

=== fehlende Console beim Start ===

Die Erste-Schritte-Anleitungen, die ich ausprobiert habe, ergaben wilde Fehlermeldungen anstatt dem Start der OSGI Console:

 !MESSAGE Could not find bundle: org.eclipse.equinox.console
 ...

Dann habe ich nach einigem suchen [http://stackoverflow.com/questions/9905607/equinox-start-error-console-bundle-is-missed hier] gelesen, das die OSGI-Console neuerdings(?) nicht mehr im Bundle ''org.osgi.framework'' inegriert ist, sondern das man noch einige andere Bundles hinzufügen muss. Hierzu nimmt man entweder die vier dort genannten:

 org.apache.felix.gogo.command
 org.apache.felix.gogo.runtime
 org.apache.felix.gogo.shell
 org.eclipse.equinox.console

Oder nur die letzten beiden und lässt dann mittels des "Add Required Bundles"-Button die Abhängigkeiten suchen. Beide Methoden ergeben eine leicht unterschiedliche Bundle-Zusamenstellung, funktionieren aber (was auch immer das bedeuten soll).


=== starten der Console auf einem Port ===

Wenn man die Eclipse-Plattform startet, gibt es ein [http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html command line argument] '''"-console 1234"''' mit dem man dafür sorgt, das die OSGI-Console auf einem TCP-Port geöffnet wird. Man kann dann mit '''"telnet localhost 1234"''' von außen auf seine laufende Applikation zugreifen. Das funktioniert übrigens nicht nur mit Eclipse, sondern z.B. auch mit [Talend Open Studio].