Ya tiene su software implementado, pero aún necesita un método más efectivo para permitir que sus usuarios técnicos amplíen la plataforma.
Aunque OSGi es bien conocido por la mayoría de los desarrolladores de Java, integrarlo en su producto puede parecer una tarea abrumadora. La falta de claridad sobre el funcionamiento preciso de OSGi complica aún más el camino a seguir.
A diferencia de cualquier cosa con la que les gustaría experimentar, para muchos desarrolladores de Java, OSGi se parece más a un intento de navegar por el mar.
Este artículo le presentará el tutorial de primavera de OSGi Felix utilizando un programa sencillo y completo, sus ventajas y otros detalles importantes.
Entonces, ¿qué es OSGi?
La creación y distribución de módulos y componentes es posible gracias al marco Java conocido como OSGi (Open Service Gateway Initiative).
Hace hincapié en la encapsulación de funciones y el acoplamiento flexible, lo que ofrece varias ventajas a los desarrolladores, incluida la funcionalidad modular que es fácilmente transferible entre códigos fuente y pruebas que no necesitan dependencias interminables.
¿Cómo funciona OSGi?
Un sistema de componentes dinámicos para Java está definido por un conjunto de especificaciones llamado OSGi. Estas especificaciones permiten un enfoque de desarrollo en el que una aplicación se crea a partir de varias partes y luego se empaqueta en paquetes.
Estos componentes utilizan los servicios locales y basados en la red para comunicarse. El objetivo es hacer que el código central del programa sea lo más compacto posible. Es posible un alto acoplamiento entre este código y varios componentes.
Los elementos de construcción reutilizables de la aplicación se denominan componentes. Piense en características como un carrito de compras para su sitio web de comercio electrónico o una aplicación de nómina para su sistema de administración de personal.
Los componentes pueden usar OSGi para ocultar sus implementaciones de otros componentes y solo proporcionarles los datos necesarios a través de los servicios.
Esto evita que los componentes cambien involuntariamente datos a los que no deberían tener acceso y administra las dependencias.
Todas las conexiones entre los componentes de una aplicación OSGi se realizan a través de servicios en un mundo ideal. Un paquete de Java contiene la API que se especifica para los servicios.
La colaboración entre proveedores de servicios y clientes requiere el uso de clases y/o interfaces, que componen la API.
Todos los componentes OSGi se empaquetan juntos en paquetes, cada uno de los cuales incluye los recursos necesarios para funcionar. Los paquetes tienen bastante claro lo que necesitan del entorno y de lo que son capaces.
Beneficios
- Las aplicaciones OSGi tienen acceso a repositorios de paquetes externos.
- El marco permite el diseño orientado a servicios a nivel de módulo.
- Permite administrar las versiones y dependencias de los paquetes de aplicaciones, además de estandarizar y facilitar la integración de bibliotecas de terceros.
- Las aplicaciones son más adaptables a las demandas cambiantes, más portátiles y más rápidas de rediseñar.
- A aplicación web se puede implementar como un grupo de paquetes OSGi versionados con una vida útil dinámica gracias a la integración del marco con el modelo de programación Java EE.
- En lugar de instalarse como una biblioteca de terceros como parte de la aplicación, el marco proporciona el ensamblaje declarativo y las pruebas unitarias optimizadas de Spring Framework en una forma estandarizada que se proporciona como parte del tiempo de ejecución del servidor de aplicaciones.
- Para aplicaciones corporativas formadas por varios paquetes con versiones con ciclos de vida dinámicos, el marco ofrece aislamiento.
- Contiene un repositorio de paquetes integrado que puede almacenar paquetes compartidos comunes y con versiones utilizados por varias aplicaciones, lo que evita que cada aplicación implemente una copia separada de cada biblioteca compartida.
Primeros pasos con OSGi Felix spring
Obtener los recursos
Al descargar la versión más reciente de Apache Karaf de este sitio, podemos comenzar nuestra aventura OSGi.
Basado en Apache Felix, la implementación de Apache de la especificación OSGi, Apache Karaf proporciona una plataforma para aplicaciones basadas en OSGi.
Karaf proporciona varias funciones útiles además de Felix que nos ayudarán a familiarizarnos con OSGi, como una interfaz de línea de comandos que nos permitirá comunicarnos con la plataforma.
Punto de entrada para paquetes
Una aplicación debe empaquetarse como un paquete OSGi antes de que pueda ejecutarse en un entorno OSGi. Además, se debe especificar el punto de entrada de la aplicación; no es la función principal de vacío estático público estándar (String [] args).
Entonces, comencemos creando un “Hola Mundo” aplicación basada en OSGi.
Comenzamos estableciendo una dependencia API OSGi básica:
El tiempo de ejecución de OSGi tendrá acceso a la dependencia, por lo que no es necesario que el paquete la contenga. Por lo tanto, se marca como suministrado.
Ahora vamos a crear la sencilla clase HelloWorld:
Las clases que actúan como puntos de entrada para los paquetes deben implementar la interfaz BundleActivator proporcionada por OSGi.
Cuando se inicia el paquete que contiene esta clase, la plataforma OSGi llama a la función start(). Por otro lado, poco antes de que se detenga el paquete, se llama a la función stop().
No olvidemos que cada paquete solo puede tener un BundleActivator. Ambas formas pueden comunicarse con el tiempo de ejecución de OSGi utilizando el objeto BundleContext que se proporciona.
Crear un paquete
Haga que pom.xml sea un verdadero paquete OSGi realizando los cambios necesarios.
Primero debemos expresar claramente que nuestro objetivo es producir un paquete.
Luego, usamos maven-bundle-plugin para empaquetar la clase HelloWorld como un paquete OSGi, cortesía de la comunidad de Apache Felix:
Los valores de los encabezados OSGi que deseamos incluir en el archivo MANIFEST del paquete se especifican en la sección de instrucciones.
Bundle-Activator es, de hecho, el nombre debidamente calificado de la solución BundleActivator que se empleará para iniciar y detener el paquete. Es compatible con la clase recién creada.
Si bien no es un encabezado OSGi, el encabezado Private-Package le indica al complemento que agregue el paquete al paquete, pero que no lo haga accesible para otros complementos. El comando mvn install debe usarse para crear el paquete.
Instalación y ejecución del paquete
Comencemos Karaf ejecutando este comando:
donde “KARAF HOME” se refiere a la carpeta donde se configuró Karaf. Podemos usar el siguiente comando para instalar el paquete cuando aparezca el indicador de la consola de Karaf:
Usando el repositorio local de Maven es como se le dice a Karaf que cargue el paquete.
Devolviendo la ID numérica del paquete, Karaf la escribe. Esta ID puede diferir según la cantidad de paquetes que se hayan instalado previamente. El paquete ahora se ha instalado correctamente y el comando para iniciarlo es el siguiente:
En el momento en que inicia el paquete, aparece "Hello World by Jay". Ahora podemos detener y eliminar el paquete usando:
La consola muestra "Goodbye World by Jay".
Conclusión
Los desarrolladores pueden agregar fácilmente nuevas funciones a una aplicación web existente mientras la mantienen segura y aislada de otros componentes del programa principal mediante el uso de OSGi.
Hemos aprendido sobre OSGi en esta publicación, incluido cómo funciona, sus ventajas y un programa sencillo. No es difícil incorporar OSGi en su propia aplicación.
¡Feliz codificación!
Deje un comentario