Desarrollo OSGi con Eclipse Equinox


- Descargando OSGi para Eclipse.
eclipse-equinox-3.4.zip
Una vez tenemos el fichero en nuestro PC, lo descomprimimos dentro de la ruta del Eclipse, en mi caso C:\Archivos de Programa\dev\Eclipse, el paquete lleva todos los plugins necesarios para que se ejecute el OSGi.
Sobretodo en el fichero que nos tenemos que fijar es el:
org.eclipse.osgi_3.4.0.v20080605-1900.jar
Que es el que luego ejecutaremos para iniciar el OSGi desde la consola del S.O.
Para comprobar que el OSGi funciona, hacemos una pequeƱa prueba, iniciamos un interprete de comandos con el comando "cmd" y luego nos dirigimos a la carpeta C:\Archivos de Programa\dev\Eclipse\plugins\ y desde aquĆ escribimos:
java -jar org.eclipse.osgi_3.4.0.v20080605-1900.jar -console
luego veremos como inicia el OSGi y inicia el servicio:

install [bundle URL]
start
stop
ss
diag
- Creando nuestro OSGi Bundle.
New Project -> Plug-in Project

Luego marcamos que el plugin funcionarĆ” con un OSGi framework Equinox:



Luego finalizamos, y nos aparecerĆ” la pantalla de configuraciĆ³n del Plug-in, donde podremos visualizar sus dependencias, propiedades y el fichero MANIFEST.MF, que es el que tiene la conversiĆ³n de los nombres simbĆ³licos, el ejemplo en nuestro caso es el siguiente:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: OsgiTest2 Plug-in
Bundle-SymbolicName: OsgiTest2
Bundle-Version: 1.0.0
Bundle-Activator: osgitest2.Activator
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.osgi.framework;version="1.3.0"
Si ahora ejecutamos el Framework tal como lo hemos creado, nos tendria que aparecer en la consola del Eclipse, un "Hello World!!" que es el que viene por defecto con la template del Bundle Plug-in.

Antes de iniciar la aplicaciĆ³n, tenemos que ir al fichero MANIFEST.MF, y con el botĆ³n derecho hacemos -> Run Configurations:

Configuration location:
file:/D:/workspace/.metadata/.plugins/org.eclipse.pde.core/mboss/
Configuration file:
file:/D:/workspace/.metadata/.plugins/org.eclipse.pde.core/mboss/config.ini loaded
Install location: file:/D:/workspace/mboss-target-platform/target/
Framework located:
file:/D:/workspace/mboss-target-platform/target org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar
Framework classpath:
file:/D:/workspace/mboss-target-platform/target/org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar
Debug options:
file:/D:/workspace/.metadata/.plugins/org.eclipse.pde.core/mboss/.options loaded
Skipping osgi.properties:
osgi.properties
Initialize the framework: 94
Trying to launch framework
osgi>
install from inputstream: i
nitial@reference:file:../../OsgiTest2/, org.eclipse.osgi.framework.internal.core.ReferenceInputStream@4741d6 compact(D:\workspace\.metadata\.plugins\org.eclipse.pde.core\mboss\org.eclipse.osgi\bundles)
Trying to resume bundle
initial@reference:file:../../OsgiTest2/ [1] Time to load bundles: 16
Trying to resume bundle initial@reference:file:../../OsgiTest2/ [1] Bundle:
Active sl = 4; Bundle 1 sl = 4
Hello World!!
->started initial@reference:file:../../OsgiTest2/ [1]
Podemos ver como aparece el mensaje que tiene programada la clase Activator.java:

- Exportando el proyecto para su ejecuciĆ³n en el OSGi
Hacemos con el botĆ³n derecho sobre nuestro proyecto -> Export -> Deployable plug-ins and fragments.

Luego seleccionamos el proyecto a exportar, en mi caso OsgiTest2:

Desde nuestro OSGi, instalamos el plug-in:
osgi> install file:W:\bundles\plugins\OsgiTest2_1.0.0.jar Bundle id is 10 osgi> start 10 Hello World!! osgi> stop 10 Goodbye World!!
Podemos ver que instalando el Bundle y iniciandolo, podemos ver el mensaje que hemos programado en Activator.java.
Si quisieramos una activaciĆ³n directa de nuestros bundles, tendriamos que crear un fichero config.ini en la carpeta C:\TEMP\configuration y que dentro de esta tuviese las activaciones de nuestros bundles:
osgi.bundles=OsgiTest2.jar@start
eclipse.ignoreApp=true
Ahora ya podemos hacer cualquier aplicaciĆ³n mediante bundles y ejecutarlos en el OSGi. Si queremos, tambiĆ©n podemos interacturar con el OSGi a travĆ©s de la consola del Eclipse. Una vez arrancamos el plug-in, podemos ejecutar los comandos necesarios en la ventana:

Enlaces de interƩs:http://mikiorbe.wordpress.com/2009/02/23/desarrollo-osgi-en-eclipse/
http://knowledgerush.com/kr/encyclopedia/OSGi/
http://www.ibm.com/developerworks/library/os-ecl-osgi/index.html
http://www.vogella.de/articles/OSGi/article.html
http://www.eclipse.org/equinox/documents/quickstart.php
Comments
Post a Comment