2011-09-22 17 views
5

Estoy tratando de ejecutar OSGi framework (Equinox) en un método principal. Cada vez que inicio el marco, cuando imprimo BundleContext.getBundles().length, dice que el marco tiene solo 1 paquete instalado (que sin duda es el paquete del sistema). Cuando instalo mi primer paquete, la identificación del paquete continuará desde la última sesión. digamos que si tuve 4 paquetes la sesión pasada (y los he detenido y desinstalado todos antes de detener el paquete del sistema), se configuró la primera ID del paquete 5. Ahora, ¿quiero saber cómo elige el marco el ID del paquete? ¿Por qué y cómo recuerda el marco la última sesión, a pesar de que había desinstalado todos los paquetes? ¿Es por Bundle Cache? Y si lo es, ¿cómo puedo borrar el caché (para reiniciar la numeración desde 1)?¿Cómo establece el marco OSGi la ID del paquete?

Respuesta

6

El marco tiene el último ID de paquete usado en algún lugar de la tienda persistente que administra. El aspecto de esta tienda es un detalle de la implementación del marco. Cuando inicia el marco, puede especificar la propiedad de configuración del marco org.osgi.framework.storage.clean. Esto borrará todos los paquetes instalados, pero no estoy seguro de si restablecerá el último ID del paquete utilizado.

+0

Se reinicia la numeración. – palacsint

+0

@palacsint - ¿Esta configuración, elimina la carpeta 'equinox/org.eclipse.osgi' que mencionaste en tu respuesta? – Reza

+0

Creo que se elimina. (He creado un directorio vacío dentro de la carpeta 'equinox/org.eclipse.osgi' y se ha ido después de que comencé el framework con' clean = true'.) – palacsint

2

Al borrar la carpeta equinox/org.eclipse.osgi se restablece la numeración. Antes de eliminar, asegúrese de que sus paquetes no tengan datos importantes debajo de esta carpeta.

El comando bundle con un ID de paquete válido puede mostrar la ruta absoluta de la carpeta equinox/org.eclipse.osgi:

osgi> bundle 7 
slf4j.api_1.6.1 [7] 
    Id=7, Status=ACTIVE  Data Root=D:\temp\test\equinox\org.eclipse.osgi\bundles\7\data 
... 
+0

¿Qué tipo de datos almacenará el paquete en este camino que podría ¿se Importante? – Reza

+1

Tal vez sus paquetes almacenan allí algunos datos persistentes. Si no persisten nada, generalmente no hay nada de qué preocuparse. Depende principalmente de tus paquetes. Otra posibilidad son las configuraciones del administrador de configuración, pero no sé demasiado al respecto. Almacenamos nuestros datos persistentes fuera de este directorio. – palacsint

Cuestiones relacionadas