package com.sample.web.app; import com.sample.web.fwk.HttpServiceTracker; import java.util.concurrent.atomic.AtomicBoolean; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.event.Observes; import javax.enterprise.inject.Any; import javax.enterprise.inject.Instance; import javax.inject.Inject; import org.osgi.cdi.api.extension.events.BundleContainerInitialized; import org.osgi.cdi.api.extension.events.Invalid; import org.osgi.cdi.api.extension.events.Valid; import org.osgi.util.tracker.ServiceTracker; @ApplicationScoped public class App { private static final String CONTEXT_ROOT = "/app"; @Inject @Any Instance<Object> instances; private ServiceTracker tracker; private AtomicBoolean valid = new AtomicBoolean(false); public void start(@Observes BundleContainerInitialized init) throws Exception { this.tracker = new HttpServiceTracker(init.getBundleContext(), getClass().getClassLoader(), instances, CONTEXT_ROOT); this.tracker.open(); } public void validate(@Observes Valid event) { valid.compareAndSet(false, true); } public void invalidate(@Observes Invalid event) { valid.compareAndSet(true, false); } public boolean isValid() { return valid.get(); } }