首页 > 其他分享 >eclipse 如何通过OSGI 服务从一个插件给另一个插件发通知

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

时间:2023-07-06 16:56:28浏览次数:39  
标签:插件 通知 eclipse event bundleContext 注册 OSGI properties

注册服务:

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/check");//$NON-NLS-1$
 ServiceRegistration<EventHandler> 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", properties);
eventAdmin.sendEvent(event);

如果想接到通知做什么事,可以在那个地方初注册服务,然后在另一个插件中发消息,注意,event的内容要相同,注册的服务才能收到发的通知,如例程中的licensecheck/check 发送这个通知后,服务就可以收到通知,并在handleEvent方法中处理,handleEvent 方法的event 可以获取到发送通知时的event 带的属性 properties

注意:注册服务不能注册多次,注册服务的代码不能被执行多次,否则发一个通知过来,会收到多次,即handleEvent 方法会被执行多次,最好是在注册服务之前先判断一下registerCheckPermissionService是否为空,如果不为空,调用registerCheckPermissionService.unregister() 注销服务后,再注册

标签:插件,通知,eclipse,event,bundleContext,注册,OSGI,properties
From: https://www.cnblogs.com/jasonboboblog/p/17532615.html

相关文章

  • SOLIDWORKS电控柜设计插件
    电控柜设备的种类有很多种,但它们大体都是箱柜式的结构。电控柜是有标准的,但对于公司产品而言,针对不同的项目,如果都使用同一种规格的电控柜,又有可能空间太大,造成浪费,因此一般来说,不同的项目所用到的电控柜的大小也不相同。 像这种结构变化不大,大多数情况是改变尺寸大小的产品,其......
  • linux下eclipse闪屏
    解决方案汇总如下在Linux中使用Dbeaver等GTK3界面的软件出现频繁闪烁的问题解决-东北小狐狸-博客园(cnblogs.com)编辑器和结果集中的屏幕闪烁·问题#8288·海狸/海狸(github.com)解决办法:(上面的几乎都不行,除了问题8288中:)主题换成深色......
  • Mybatis-generator插件快速生成代码
    生成步骤:在pom.xml中添加插件<!--mybatisGenerator插件--><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.4.0</version><depende......
  • 揭秘报表新玩法!标配插件不再单调,如何用柱形图插件让你的报表瞬间高大上!
    摘要:本文由葡萄城技术团队于博客园原创并首发。葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言图表作为一款用于可视化数据的工具,可以帮助我们更好的分析和理解数据,并发现数据之间的关系和趋势。下面以柱形图为例介绍如何使用JavaScript在报表中引入图表。本文......
  • Apipost IDEA插件新升级,Apipost Helper上架IDEA插件市场
    大家好!今天向大家介绍一个非常方便的IDEA插件——ApipostHelper!相信很多使用过Apipost的朋友在开发过程中都希望能够直接将编写好的API同步至Apipost,而无需手动填写。前段时间,Apipost推出了ApipostIDEA插件的内测版,我也亲自试用了一番,发现它非常实用。最近,也得知ApipostHelper......
  • 15个友好的jQuery 提示框插件
    需要在用户把光标移到某个元素上时显示一些额外信息时,提示框是一种不错的方式,提示框会在鼠标停留的时候显示,鼠标移开时消失。 适当的使用提示框能大大提升网站的友好度,并且可以节省一些不必要的网页空间,今天我们将看到15款制作友好的提示框的jQuery插件。 1.qTipqTip是一款功能......
  • 2023容器网络趋势:CNI网络插件逐渐普及,Kube-OVN受欢迎度持续攀升
    今年,Kube-OVN社区联合OSCHINA、云原生社区共同发起了《2022-2023容器网络使用情况调研》,得到了大批K8s/容器网络技术人员的关注。本调研旨在更加直观地了解各行业企业容器网络的使用现状,以及Kube-OVN在社区用户中的使用情况,以便更全面地评估容器网络发展方向,更有针对性地规划Kub......
  • burp 插件编写
    挖洞效率好低,思来想去,还是得靠插件。0到1,的burp插件开发 https://portswigger.net/burp/extender/api/allclasses-noframe.html  接口文档,给出的接口的方法及其作用https://portswigger.net/burp/extender/api/constant-values.html#burp.IRequestInfo.CONTENT_TYPE_JSO......
  • chrome插件开发
    1.前置知识JavaScript一些基本前端知识2.环境准备运行环境:Chrome浏览器或Chromium内核浏览器(如Edge),在浏览器”拓展”中打开”开发人员模式”3.目录结构├──css//css文件├──html//html文件├──images//存放插件图标等图片├──js......
  • unity前后端通信 json解析 HTTP POST(BestHttp插件实现)
    1.配置请求体中的Json字符串1request_data=newRequestBodyClass();2request_data.a="Json第一个字段";3request_data.b="Json第二个字段";4stringbody=JsonUtility.ToJson(request_data);2.实例化HTTPRequest,请求头方法设置为POST,并且设置请求头中类型为json......