Acabo de tropezar con el hecho de que los Servicios Declarativos en OSGi pueden establecer la configuración de un componente para que el componente lo reciba al activarse, eliminando la brecha entre la activación y la configuración de los componentes. También me di cuenta de que puede recibir actualizaciones de configuración a través del modified
-metodo.OSGi Declarative Services vs. ManagedService para configurar el servicio?
Me parece que esta funcionalidad es bastante similar a la proporcionada al implementar la interfaz ManagedService
y publicarla como uno de los "servicios" que proporciona.
Parece que podría ignorar por completo ManagedService
& simplemente use la inyección de configuración de DS.
¿Alguna de estas técnicas es preferible a la otra o hay otras compensaciones que no estoy viendo?
Ok, esto es a lo que me estaba inclinando, pero noté/estaba un poco preocupado cuando no se puede crear un componente de DS porque su configuración no es válida y arroja una excepción porque Equinox sigue intentando crear una instancia y mucho de excepciones lanzadas y registradas. No parecía limpio. – oconnor0
Equinox no debería seguir tratando de crear una instancia del componente si su método de activación arroja una excepción. Solo debería volver a intentar recrear el componente si la configuración cambia. En cuanto al registro, ¡por supuesto, la excepción lanzada por el componente debería registrarse! –
¿Cuál es la forma correcta de convencer a DS para que trate un componente como 'ManagedServiceFactory', en lugar de como' ManagedService'? En otras palabras, si uno quiere que DS cree una nueva instancia de un componente para * cada * instancia de configuración aplicable, ¿cuál es el truco? ¿Requiere escribir una definición de Metatype? – seh