import org.osgi.framework.*; import org.osgi.util.tracker.*; public class MyServiceConsumer { private BundleContext context; private ServiceTracker<MyService, MyService> tracker; public void start(BundleContext ctx) throws Exception { context = ctx; tracker = new ServiceTracker<>(context, MyService.class, new MyServiceTrackerCustomizer()); tracker.open(); } public void stop(BundleContext ctx) throws Exception { if (tracker != null) { tracker.close(); tracker = null; } context = null; } private class MyServiceTrackerCustomizer implements ServiceTrackerCustomizer<MyService, MyService> { @Override public MyService addingService(ServiceReference<MyService> reference) { MyService service = context.getService(reference); // Perform initialization return service; } @Override public void modifiedService(ServiceReference<MyService> reference, MyService service) { // Perform any necessary updates } @Override public void removedService(ServiceReference<MyService> reference, MyService service) { // Perform cleanup context.ungetService(reference); } } } Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: MyServiceConsumer Bundle-SymbolicName: com.example.myserviceconsumer Bundle-Version: 1.0.0 Bundle-Activator: com.example.myserviceconsumer.Activator Require-Bundle: org.osgi.core


上一篇:
下一篇:
切换中文