Archive for junio, 2008

OSGi: Primeros pasos

Tras los anuncios de varios proyectos importantes (Eclipse, GlassFish, SpringSource Application Platform) de su paso a OSGI, parece que estas siglas están bastante de moda dentro del mundo Java. En esta entrada intento dar una visión resumida y fugaz de lo que es OSGi. Quizás la mejor definición y la más concisa es la que aparece en la cabecera de la web de OSGi: Sistema de módulos dinámicos para Java. Básicamente lo que aporta OSGi o mejor dicho OSGi Service Platform (el estándar que publica la OSGi Alliance) es un contenedor sobre el que corren distintos módulos, con sus versiones, sus paquetes exportados (utilizables por otros módulos) y sus dependencias. Existen distintas implementaciones de dicho estándar, siendo las más conocidas Equinox (de Eclipse) y Felix (de Apache). Para esta entrada voy a utilizar Felix, pero sin ninguna razón de peso para su elección. Descargamos el zip desde su sitio web y descomprimimos en el directorio de nuestra elección. Podemos encontrar una estructura bastante típica con su bin, config y doc. Para lanzarlo, necesitamos una consola situada en el directorio raíz de Felix y ejecutar java -jar bin/felix.jar.

Arranque de Felix

Lo primero que se nos pregunta es un nombre de perfil. Podemos poner cualquier cosa. Felix persiste bajo ese nombre y en nuestro directorio personal algunos datos como los módulos cargados. Esto es propio de Felix y Equinox por ejemplo no nos pedirá ningún perfil.

Si en la consola que se nos presenta introducimos help, nos mostrará un listado de los comandos disponibles, como por ejemplo ps (de qué me sonará a mí) que nos muestra el estado de los módulos en ejecución.

Ayuda y ps en Felix

Hay que destacar que tampoco esos comandos son estándares y en Equinox en lugar de ps tendremos que ejecutar ss.

De cara a implementar nuestro primer módulo, debemos conocer las características que tenemos que cumplir para que nuestro módulo pueda funcionar en Felix (o Equinox, que esto ya es parte del estándar) .

  • Tener una clase activadora. Será una clase que implemente BundleActivator (en el ejemplo veremos sus métodos que os adelanto no son demasiado complicados).
  • Definir en el MANIFEST.MF (el descriptor de un jar) algunas propiedades que serán utilizadas por nuestra plataforma OSGi para instalar el módulo.

Bueno, pues aunque pensaba incluir en esta primera entrada la realización del primer módulo, lo dejaré para una posterior (aunque pretendo que no tengáis que esperar mucho).

Actualización: Segunda parte

4 junio 2008 at 8:46 pm 1 comentario

Entradas siguientes


Mi perfil

View Miguel Orbegozo's profile on LinkedIn

Feedjit

Feeds

Otros…

BlogESfera Directorio de Blogs Hispanos - Agrega tu Blog

Bitacoras.com

Add to Technorati Favorites