eclipse 如何通过OSGI 服务从一个插件给另一个插件发通知

发布时间 2023-07-06 16:47:33作者: jason_bo

注册服务:

BundleContext bundleContext = FrameworkUtil.getBundle(当前类.class).getBundleContext();
 EventHandler eventCreateNewConfigEventHandler = new EventHandler() {
 	@Override
 	public void handleEvent(final org.osgi.service.event.Event event) {
 		doSomething()...
	 }
 };
 Dictionary<String, String> properties = new Hashtable<String, String>();
 properties.put(EventConstants.EVENT_TOPIC, "licensecheck/result");//$NON-NLS-1$
 registerCheckPermissionService = bundleContext.registerService(EventHandler.class, eventCreateNewConfigEventHandler, properties);

发通知:

BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
ServiceReference<EventAdmin> serviceRef = bundleContext.getServiceReference(EventAdmin.class);
EventAdmin eventAdmin = bundleContext.getService(serviceRef);
final Map<String, String> properties = new HashMap<String, String>();
org.osgi.service.event.Event event = new org.osgi.service.event.Event("licensecheck/check", roperties);
eventAdmin.sendEvent(event);