Para poder disponer de un entorno OSGi básico, basado en la distribución Equinox de Eclipse, y lo más importante, fuera del entorno de Eclipse, tenemos que disponer de un paquete de ficheros que definimos, a continuación.
Creamos una carpeta que contendrá todo el paquete de distribución OSGi. Lo podemos llamar «osgi-runtime», por ejemplo. Dentro de esta carpeta tendremos una copia del fichero org.eclipse.osgi.
A continuación, creamos una carpeta plugins y dentro de esta tendremos una copia de los siguientes ficheros jars mínimos necesarios para ejecutar el entorno OSGi.
- org.apache.felix.gogo.command
- org.apache.felix.gogo.runtime
- org.apache.felix.gogo.shell
- org.eclipse.equinox.console
Y también de nuestros bundles que forman parte de nuestra aplicación. Aunque, personalmente, me gusta más separar lo nuestro de los requeridos por el entorno. Llamemos a nuestra carpeta de bundles, app.
Además de la carpeta anterior, creamos otra que llamaremos configuration. En esta habrá un único fichero llamado config.ini cuyo contenido será como el que mostramos, a continuación.
osgi.bundles=plugins/org.apache.felix.gogo.runtime@start,\ plugins/ org.apache.felix.gogo.command@start,\ plugins/ org.apache.felix.gogo.shell@start,\ plugins/ org.eclipse.equinox.console@start ,\ app/ (nombre de todos y cada uno de nuestros bundles)@start eclipse.application.launchDefault=false
Luego, para ejecutar el entorno, debemos lanzar el siguiente comando desde la «línea de comandos»:
# java -jar org.eclipse.osgi.jar -console
Y voilà, ya tendremos acceso a la consola del entorno OSGi basado en Equinox.
Resumen del distribuible:
- /osgi-runtime/
- plugins/
- org.apache.felix.gogo.command.jar
- org.apache.felix.gogo.runtime.jar
- org.apache.felix.gogo.shell.jar
- org.eclipse.equinox.console.jar
- app/
- (nuestros bundles).jar
- configuration/
- config.ini
- org.eclipse.osgi.jar
- plugins/
Aquí tenéis un ejemplo de todo lo expuesto anteriormente.
https://github.com/chuidiang/chuidiang-ejemplos/tree/master/OSGI/OSGIStandAlone