private void updateJobService(String id, Resource resource) { log.debug("Registering job: {}", id); try { String filter = "(&(" + SERVICE_OWNER_KEY + "=" + getClass().getCanonicalName() + ")" + "(" + CONFIGURATION_ID_KEY + "=" + id + "))"; ServiceReference[] serviceReferences = (ServiceReference[]) ArrayUtils.addAll( bctx.getServiceReferences(Runnable.class.getCanonicalName(), filter), bctx.getServiceReferences(EventHandler.class.getCanonicalName(), filter)); if (serviceReferences != null && serviceReferences.length > 0) { ServiceReference sr = serviceReferences[0]; if (isServiceUpdated(resource, sr)) { log.debug("Service for {} up to date, no changes necessary", id); } else { log.warn("Unbinding ServiceReference for {}", id); unregisterService(id); registerService(id, resource); } } else { registerService(id, resource); } } catch (Exception e) { log.error("Failed to register job " + id, e); } }