Posts tagged ‘Equinox’
Desarrollo OSGi en Eclipse
En todos los ejemplo de OSGi que he estado publicando en este blog he utilizado como contenedor OSGi Apache Felix. Pero también comentamos que Eclipse estaba basado en OSGi y por tanto funciona sobre su motor OSGi Equinox.
Como mi IDE actualmente es Eclipse, voy a tratar el tema de desarrollo OSGi utilizando este magnífico entorno libre. Para ello trasladaré lo hecho en el ejemplo de gestión de dependencias con OSGi y lo probaré sobre Equinox.
Para desarrollar OSGi con eclipse, lo más cómodo es utilizar el PDE (Plugin Development Extension) de Eclipse, ya que realmente los plugins de Eclipse son módulos OSGi. Si no bajamos nuestro eclipse con PDE integrado deberemos instalarlo.
Creamos un nuevo proyecto. En la ventana de selección de wizard seleccionamos dentro de «Plug-in Development» la opción «Plug-in Project». Le damos un nombre al proyecto de forma habitual y selecciono como «Target platform» un framework OSGi standar.
En la siguiente ventana le damos los datos que van a formar parte del MANIFEST.MF: id, nombre, proveedor, versión. Relleno los campos para que mantenga los valores que en su día teníamos. Dejamos sin marcar la casilla de generar un Activator, ya que tenemos uno ya creado. Con esto podemos dar por concluido el wizard de creación del proyecto.
Se nos abre el editor especial para el MANIFEST.MF en el que tenemos distintas pestañas como por ejemplo la vista general («overview») o la de ver el MANIFEST en texto:
Copio o añado los fuentes que tenía en el módulo de logs que utilizamos para ver la gestión de dependencias en OSGi. Podremos ver un error en la compilación debido a que no reconoce las clases OSGi. Sin embargo Eclipse nos sugiere la solución: Añadir como dependencia el paquete org.osgi.framework
. Lo podemos añadir mediante la sugerencia de Eclipse, o en la pestaña dependencias de nuestro MANIFEST.MF, en la que podemos ver todos los paquetes exportados.
Ahora en la pestaña «runtime» podemos añadir los paquetes que exporta nuestro módulo. Seleccionamos el mismo paquete que exportábamos entonces (org.tcymu.osgi.log.logger
) y luego en las propiedades de lo exportado ponemos la versión (1.0.1). por último en la pestaña de visión general podemos declarar el activador (LogBundle
).
En la misma pestaña de visión general también tenemos un enlace para lanzar el framework. Si lo ejecutamos veremos la traza que sacaba nuestro módulo al arrancar:
osgi> 18-02-2009 18:28:16.47: Arrancando LogBundle
Podemos utilizar el comando ss
(similar al ps
que vimos en Felix) para ver el estado de los módulos:
Si tecleamos help
veremos la lista completa de comandos, en la que descubrimos que el comando stop
seguido por el identificador del módulo detiene ese módulo, y que el comando exit
nos sirve para detener completamente la ejecución.
Por último voy a crear un nuevo proyecto de tipo plugin para el módulo de nuestra aplicación. En él copiamos el código fuente del módulo de aplicación tal como lo teníamos en los anteriores ejemplos. Nos aparecerán los errores de dependencias tanto de las clases OSGi como de las clases del módulo de logs. Y vemos que podemos importar tanto los de OSGi como los de nuestro módulo de logs. Tras definir la clase de activación ejecutamos el módulo y todo funciona correctamente, arrancándose también el módulo de logs.
Y esto es todo por hoy.
Comentarios recientes