Intento aprender cómo funciona el osgi. Escribí mi primer paquete de hello-world, que da algunos resultados de consola cuando se ejecuta el método de inicio de la clase de activador de paquete. Ahora, he leído sobre el mecanismo de inicio lento y puse esta bandera en mi manifiesto de paquete. luego, inicié la consola Equinox, instalé mi paquete y lo inicié. pero ahora esperaba que mi paquete se marcara como 'inicio'. pero en su lugar, ya llama a su método de inicio y se marca como activo. ¿He entendido algo mal con el mecanismo de arranque perezoso?pregunta del ciclo de vida del paquete osgi
Respuesta
El indicador de inicio diferido se utiliza cuando tiene otros paquetes que dependen de su paquete y de las clases de su paquete.
Digamos que tienes dos paquetes A y B, donde
- A exporta la clase C
- B depende de A
- B contiene una clase D que hace referencia C
Lo sucede cuando el paquete B está activado?
Sin bandera de carga lenta, el paquete A se carga y se activa primero.
Con la bandera lazy-carga, la Un haz no se carga o se activa hasta que la clase D tiene que referirse a la clase C.
que puede hacer una diferencia muy grande en el perfil de activación, como la carga y activación de los paquetes se posponen para que ocurran lo más tarde posible con la bandera de carga lenta, por lo que la respuesta inicial del paquete es muy rápida ...
Por el contrario, esta bandera también lo convierte en un agujero mucho más Es difícil razonar sobre el tiempo de ejecución de los métodos en B ya que esto puede ser interceptado con carga y activación de paquetes en cualquier momento ...
Dijiste que ya habías iniciado tu paquete después de la instalación: si inicias tu paquete manualmente, se activa independientemente de la política de activación diferida.
Según the OSGi specification lo siguiente es cierto para la activación:
Una política de activación perezoso indica que el paquete, una vez iniciado, debe no se activará hasta que una clase se carga desde ella; ya sea durante la carga normal de la clase o mediante el método Bundle loadClass. La carga de recursos no activa la activación. Este cambio de la política de activación impaciente predeterminada se refleja en el estado del paquete y sus eventos . Cuando se inicia un haz utilizando una política de activación perezoso, se deben tomar las siguientes etapas: se crea
- A Bundle Contexto para el lote.
- El estado del paquete se mueve al estado INICIO.
- El evento LAZY_ACTIVATION se desencadena.
- El sistema espera que se produzca una carga de clase del paquete.
- Se inicia el evento STARTING normal.
- El paquete está activado.
- El estado del paquete se mueve a ACTIVE.
- El evento STARTED se desencadena.
Si la activación falla porque el paquete Activador empezar método ha lanzado una excepción, el paquete debe ser detenido sin llamar al método stop Paquete Activador . Estos pasos se muestran en un diagrama de flujo en la Figura 4.29. Este diagrama de flujo también muestra la diferencia en la política de activación de la activación impaciente normal y la activación floja.
actualización: ya que no puedo decir qué versión de la especificación he abierto en el momento en que escribí la respuesta (sin embargo, creo, que era o 4.2 o 4.3), he comprobado la corriente, v5 .0 especificación, y la sección 4.4.6.2 contiene el lugar real, semánticamente equivalente.
Debe presentar la fuente de la especificación. Las especificaciones pueden cambiar con el tiempo y los futuros lectores (como yo) no saben dónde y de qué versión obtuviste esa cita. –
Gracias por el comentario; He agregado referencias a la especificación. –
- 1. Estructura del paquete del paquete OSGi
- 2. Ciclo de vida del controlador de rieles
- 3. Ciclo de vida del evento WinForms
- 4. Ciclo de vida del objeto en NHibernate
- 5. Ciclo de vida del controlador ASP.NET MVC
- 6. ¿Cómo funciona la actualización del paquete OSGi?
- 7. El ciclo de vida del servicio WCF alojado en IIS
- 8. Prueba del ciclo de vida de la actividad de Android
- 9. Explicación del ciclo de vida de la página ASP.NET
- 10. Ciclo de vida del objeto de la aplicación Android
- 11. JUnit @Rule interacción del ciclo de vida con @Antes de
- 12. Modelos de ciclo de vida del software para desarrollo web
- 13. Alcance de Structuremap/Guía del ciclo de vida?
- 14. Servicios de Android: consideraciones del ciclo de vida
- 15. Cómo excluir una fase del ciclo de vida de Maven
- 16. Asp.net página variable global específica del ciclo de vida?
- 17. Ciclo de vida del controlador en Spring MVC
- 18. ciclo de vida del servicio iniciado y encuadernado?
- 19. Actividad ciclo de vida uno al lado del otro
- 20. parando eventos del ciclo de vida IOS5 automáticamente siendo llamados
- 21. JUnit ciclo de vida
- 22. ¿La mejor técnica para obtener el contexto del paquete OSGi?
- 23. ¿Cómo establece el marco OSGi la ID del paquete?
- 24. ciclo de vida del almacenamiento local del iPhone: ¿sobrevive una actualización de la aplicación?
- 25. La ejecución del complemento no está cubierta por el error de configuración del ciclo de vida
- 26. ViewState Vs Session ... mantenimiento del objeto a través del ciclo de vida de la página
- 27. Error del complemento: la ejecución no está cubierta por la configuración del ciclo de vida
- 28. La ejecución del complemento no está cubierta por la configuración del ciclo de vida
- 29. Ciclo de vida de SharedPreference de Android
- 30. Ciclo de vida de objetos estáticos Android
¡Muchas gracias a los dos! Esto no se ha explicado muy bien en mi libro, pero ahora lo entiendo :-) – July