He creado un paquete OSGi con un servicio expuesto (declarativo). Si yo, cuando se llama a activar, noto que algo anda mal y no puedo prestar el servicio, necesito evitar que se exponga. Por el momento la función de activación se ve así:¿Cuál es la forma correcta de deshabilitar un servicio OSGi al inicio del servicio?
public void activate(ComponentContext context, Map<String, Object> properties) {
pid = (String) properties.get(Constants.SERVICE_PID);
try {
...
}
catch(Exception e) {
context.disableComponent(pid);
}
}
Otra alternativa es simplemente envuelva/propagar la excepción (o lanzar uno nuevo, dependiendo) de esta manera:
public void activate(ComponentContext context, Map<String, Object> properties) {
try {
...
}
catch(Exception e) {
throw new ComponentException("Some reason");
}
}
no puedo encontrar el comportamiento correcto especificado en la sección sobre servicios declarativos en el OSGi Service Platform Service Compendium, pero podría faltar algo