<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.util.tracker</artifactId>
<version>1.6.0</version>
</dependency>
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.framework.BundleContext;
public class MessageProviderTracker extends ServiceTracker<MessageProvider, MessageProvider> {
public MessageProviderTracker(BundleContext context) {
super(context, MessageProvider.class, null);
}
@Override
public MessageProvider addingService(ServiceReference<MessageProvider> reference) {
MessageProvider provider = super.addingService(reference);
return provider;
}
@Override
public void modifiedService(ServiceReference<MessageProvider> reference, MessageProvider provider) {
super.modifiedService(reference, provider);
}
@Override
public void removedService(ServiceReference<MessageProvider> reference, MessageProvider provider) {
super.removedService(reference, provider);
}
}
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class MyBundleActivator implements BundleActivator {
private MessageProviderTracker tracker;
public void start(BundleContext context) throws Exception {
tracker = new MessageProviderTracker(context);
tracker.open();
MessageProvider provider = tracker.getService();
}
public void stop(BundleContext context) throws Exception {
tracker.close();
}
}