La arquitectura OSGi

La parte esencial de OSGi Service Platform define una plataforma de servicio segura y gestionada que se basa en Java™. Esta plataforma da soporte al despliegue de aplicaciones ampliables y descargables que se conocen como paquetes. La especificación define un modelo de seguridad, un modelo de gestión del ciclo de vida de aplicación, un registro de servicios, un entorno de ejecución y módulos.

OSGi define un sistema modular dinámico para Java. OSGi Service Platform tiene una arquitectura en capas y está diseñado para ejecutarse en varios perfiles Java estándar. OSGi introduce el concepto de paquete como una unidad modular y la arquitectura de la plataforma se basa en paquetes como unidad de despliegue. La arquitectura OSGi tiene las capas siguientes:
Capa del entorno de ejecución
Capa del módulo
Capa del ciclo de vida
Capa del registro de servicios
Para obtener más información sobre la arquitectura OSGi, consulte la Especificación principal de OSGi Service Platform.

Capa del entorno de ejecución

La capa del entorno de ejecución especifica el entorno Java (por ejemplo, Java EE o Java SE) bajo el que se ejecuta un paquete. Para las aplicaciones OSGi que se ejecutan en WebSphere Application Server, no es necesario que especifique el entorno de ejecución.

Capa del módulo

La capa del módulo es el lugar donde la infraestructura OSGi procesa los aspectos modulares de un paquete. Los metadatos que permiten que la infraestructura OSGi procese el paquete se establecen en un archivo de manifiesto de paquete.

Una de las ventajas esenciales de OSGi es su modelo de cargador de clases, que utiliza los metadatos del archivo de manifiesto. OSGi no tiene una vía de acceso de clases global. Cuando se instalan paquetes en la infraestructura OSGi, la capa del módulo procesa los metadatos y las dependencias externas declaradas se reconcilian con las exportaciones con versión declaradas por otros módulos instalados. La infraestructura OSGi determina las dependencias utilizando el manifiesto, y calcula la vía de acceso de clases necesaria independiente para cada paquete. Este método resuelve las deficiencias de la carga de clases Java simple al asegurarse de que se cumplan los requisitos siguientes:
  • Sólo los paquetes que son exportados explícitamente por un paquete determinado, a través de los metadatos, son visibles para otros paquetes para la importación.
  • Cada paquete puede ser resuelto en versiones específicas.
  • Puede haber varias versiones de un paquete disponibles simultáneamente para clientes diferentes.

Capa del ciclo de vida

La capa de gestión del ciclo de vida de paquete de OSGi elimina el problema de la carga de clases Java y la excepción debida a clase no encontrada que se produce en tiempo de ejecución, en la que las clases dependientes no se puede cargar porque no se pueden encontrar. Cuando un paquete instalado se despliega en la infraestructura, primero la infraestructura resuelve todas sus dependencias declaradas. Si existen dependencias sin resolver, la infraestructura notifica estas dependencias y no inicia el paquete.

En el ciclo de vida del paquete:
  • Los paquetes son dinámicos, y se pueden iniciar y detener con independencia del resto de la infraestructura.
  • Cada paquete puede proporcionar un activador de paquete que la infraestructura invoca al iniciar y detener sucesos. El activador de paquete se declara en el manifiesto de paquete.

Las aplicaciones normalmente no necesitan proporcionar un activador de paquete. Pero si es necesaria una inicialización cuando se inicia o detiene el paquete, se puede crear un activador de paquete.

Capa del registro de servicios

La capa de registro de servicios de OSGi da soporte intrínsecamente a una arquitectura orientada a servicios (SOA). Los paquetes publican servicios en el registro de servicios y otros paquetes pueden descubrir estos servicios a partir del registro de servicios.

Estos servicios son los medios principales de colaboración entre paquetes. Un servicio OSGi es un Plain Old Java Object (POJO), que se publica en el registro de servicios bajo uno o varios nombres de interfaz Java, con metadatos opcionales almacenados como propiedades personalizadas (pares nombre-valor). Un paquete de descubrimiento busca un servicio en el registro de servicios mediante un nombre de interfaz y luego puede filtrar los servicios utilizando las propiedades personalizadas.

Los servicios son totalmente dinámicos y generalmente tienen el mismo ciclo de vida que el paquete que los proporciona.

Icono que indica el tipo de tema Tema de conceptos
Términos y condiciones para centros de información | Comentarios

Icono de indicación de fecha y hora Última actualización: 22 de abril de 2014

Nombre de archivo: cosgiarchitecture.html