Ir a Tecsisa.com
29abr/10

Nueva release del ESB Apache ServiceMix

Esta semana se han publicado las nuevas releases de uno de los proyectos estrella del universo SOA open-source: Apache ServiceMix. Las nuevas distribuciones se corresponden con la versión de mantenimiento 3.3.2 y la nueva versión del desarrollo principal, basado en el estándar OSGi, 4.2.0.

Como comenté en un artículo previo, a raíz de la aparición de Apache ServiceMix 4, la línea de la versión 4 parece la más interesante para nuevos desarrollos, principalmente a tenor de los movimientos dados por la industria hacia la adopción de OSGi como modelo de componentización y despliegue de soluciones. En este sentido, los fabricantes líderes del sector como Oracle, IBM o SpringSource están incorporando el modelo de OSGi es las nuevas versiones de sus servidores de aplicaciones.

Novedades de ServiceMix 4.2.0

La principal novedad que incorpora esta nueva versión es que ya supone una versión estable para implementar soluciones reales. Hasta ahora, la rama de ServiceMix 3 había sido la recomendada para entornos de producción debido al grado de inmadurez que presentaba todavía la versión 4. Para esta nueva versión, se han solucionado un buen número de bugs e incorporado las nuevas versiones de proyectos adyacentes como Apache Camel, Apache CXF y Apache ActiveMQ, por lo que se puede decir que se trata de una versión lista para producción.

Por otra parte, se ha completado la implementación de la capa JBI con la incorporación de una característica de clusterización de endpoints. Esto permitiría eventualmente tener alta disponibilidad de servicios web, de procesos BPEL, rutas de Camel y en general de cualquier servicio publicado por ServiceMix como endpoint JBI.

En esta nueva versión, se ha sustituido el kernel OSGi de ServiceMix por Apache Felix Karaf. Karaf es una evolución del ServiceMix Kernel que se ha llevado al contexto del proyecto Apache Felix por tratar funcionalidades y características generales de los contenedores OSGi e independientes en principio de un ESB o cualquier otro sistema en particular. Sin embargo, Karaf introduce un conjunto de características que hacen de ServiceMix un ESB muy escalable y flexible como la facilidad de aprovisionamiento, el despliegue y configuración de propiedades en caliente, el acceso remoto por ssh, instalación muy sencilla, seguridad basada en JAAS, etc.

Por último voy a destacar la inclusión de los OSGi Blueprint Services que supone una estandarización de Spring DM para el despliegue de servicios disponibles en el contexto de la plataforma OSGi inyectables como dependencias, algo así como tener SOA sobre la Java Virtual Machine aplicando el patrón DI como en los proyectos de Spring tradicionales. Dado que Spring DM ha asumido esta estandarización a partir de su versión 2, es posible especificar servicios OSGi de forma estándar y que pueden ser ejecutados en cualquier plataforma que soporte el estándar Blueprint. Por otra parte, ServiceMix sigue soportando servicios de Spring DM por lo que tenemos mayor variedad de opciones a la hora de publicar servicios OSGi sobre la plataforma.

Un vistazo rápido a ServiceMix 4.2.0

Para comenzar a trabajar con ServiceMix 4.2.0 descargamos la solución y la descomprimimos en un directorio local que denominaremos en adelante SMX_HOME.

Abrimos una consola y situamos el cursor en SMX_HOME. Para arrancar ServiceMix ejecutamos:

SMX_HOME$ ./bin/servicemix (Unix)
SMX_HOME:/> .\bin\servicemix (Windows)

Tras el arranque la consola debería presentar aproximadamente este aspecto:

Consola de ServiceMix 4

La consola de ServiceMix nos da la bienvenida pero si nos fijamos en el cursor, se pone de manifiesto que no es más que una instancia de Karaf sobre la que se han desplegado un conjunto de bundles que proveen la funcionalidad del Enterprise Service Bus. Si ejecutamos el comando:

karaf@root> list

obtenemos un listado de todos los bundles instalados actualmente en la plataforma.

ServiceMix 4 Consola 2

Desde la consola se pueden ejecutar todas las operaciones típicas a realizar con un contenedor OSGi, como provisionar, arrancar y parar bundles, etc. Para ver todas las opciones disponibles por la consola, teclea dos veces el tabulador y acepta ver todas las opciones. De esta manera verás todas los comandos disponibles.

Hay que destacar que la consola es en sí mismo extensible y eventualmente admitiría el despliegue de comandos propios de nuestro proyecto o atajos para realizar tareas tediosas o repetitivas. Por otro lado, como se ha comentado, es posible conectarnos por ssh a la instancia de ServiceMix y controlar así la instancia en remoto. Para ello, con un cliente ssh ejecutar:

$ ssh -p 8101 -l smx localhost
$ smx@localhost's password: smx

Como podrás comprobar tienes acceso a la instancia de ServiceMix a través de la consola que ya conocías. Para desconectar de la consola:

smx@root> logout
Connection to localhost closed.

La consola Web

También es posible interactuar con la instancia de ServiceMix a través de una consola web desplegable en Karaf. La consola no está activa por defecto pero está disponible a través de una característica o feature de Karaf. Esto nos da pie a comentar una de las características más potentes de Karaf y por extensión de ServiceMix 4: el aprovisionamiento de bundles a través de features.

Desde la consola ejecutar:

karaf@root> features:list

Esto nos recupera un conjunto de features que están disponibles para instalar en ServiceMix. Cada feature implica un conjunto de bundles OSGi u otras features que funcionando juntas dan una cierta funcionalidad. Por ejemplo, vamos a instalar la consola web de una forma muy simple ejecutando:

karaf@root> features:install webconsole

Si no tienes en local las dependencias de webconsole, éstas se descargarán del repositorio de Maven 2. Para verificar que la consola web se ha instalado correctamente, abre un browser y navega a:

http://localhost:8181/system/console
U: karaf
P: karaf

Como podrás comprobar, te aparece el listado de bundles sobre los que puedes interactuar, así como otras opciones de administración sobre la instancia de ServiceMix, en particular la gestión de las propiedades de configuración, las features instaladas y disponibles, etc.

ServiceMix 4 Consola Web

Conclusiones

Como se ha mencionado, el proyecto Apache ServiceMix está haciendo un gran esfuerzo por hacer cada vez más ágil y flexible la administración de un Enterprise Service Bus aprovechándose del estándar OSGi. La adopción de Apache Felix Karaf como el entorno base de ejecución y administración, permite aplicar un enfoque bottom-up a nuestra estrategia de despliegue SOA en la organización yendo de lo simple a lo complejo, de los servicios a los procesos de negocio.

avatar

Acerca de

Juan José Vázquez es arquitecto de software y consultor en nuevas tecnologías, principalmente en el área de SOA y tecnologías open-source. Desde 2005 es socio de Tecsisa.
Comentarios (3) Trackbacks (1)
  1. Hola, me parece muy buena tu página. Necesito por favor me ayudes, estoy tratando de levantar la consola web de servicemix 4.2.0. sobre windows 7, al ejecutar el comando features:instal webconsole, no hay ninguna novedad, pero cuando quiero acceder via web me sale el error: Problem accessing /system/console. Reason:

    java.lang.NullPointerException

    Que podria hacer para solucionar esto

  2. Agradezco sus notas en la Web han sido de mucha utilidad; quisiera saber si puedo molestarle con una pregunta; resulta que he venido trabajando con OPEN ESB de Sun Microsystem desde hace unos tres años, pero a partir de la adquisición por parte de Oracle este producto lo dejaron de soportar y actualizar obviamente, el producto para lo que hasta el momento lo hemos usado ha satisfecho todas nuestras necesidades, pero a medida que pasa el tiempo se va quedando rezagado en la obsolescencia; mi pregunta es, ¿con base a su experiencia ServiceMix es un producto que me pueda dar lo que hoy día hacemos con Open ESB y más?, por lo que veo ya salió la versión 4 que tiene el estándar OSGi; respecto a OPEN ESB hemos usado todo el tema de integración con BPEL y Servicios Web.

    PICO.

  3. Muy buen artículo, ahorita ya se anda en la Versión 4.3 de Apache Service Mix, los links proporcionados ya no están vigentes, es solo cuestión de ir al Sitio de Apache y posicionarse en la versión actual. Gracias por la buena información que publicas.


Deja un comentario