由于您使用的是不支持依赖注入的 eclipse 3.8.1,您可以使用以下代码。
事件监听。
实现 org.osgi.service.event.EventHandler 接口来处理事件。
在 BundleContext 中注册你的监听器。 javadoc中有一个例子:
String[] topics = new String[{EventConstants.EVENT_TOPIC,«com/sample_topic»};
Hashtable ht = new Hashtable();
ht.put(EVENT_TOPIC, topics);
context.registerService(EventHandler.class.getName(), this, ht);
事件发送。
EventAdmin 实例可用于发送事件。详情请见javadoc。
该接口为我们提供了 2 个方法 sendEvent 用于同步发送和 postEvent 用于异步发送。
您可以从 BundleContext 获取 EventAdmin 实例:
ServiceReference<EventAdmin> serviceReference = bundleContext.getServiceReference(EventAdmin.class);
EventAdmin eventAdmin = bundleContext.getService(serviceReference);
EventAdmin 的 Equinox 实现非常具体,我写了一个简短的 post about that。