探索Eclipse的OSGi控制台

从V3.0开始,Eclipse选择了开放服务网关计划(OSGi)来代替早期版本中摇摇欲坠的Eclipse插件技术,从而实现了巨大飞跃。 这种过渡对用户几乎是透明的,因为插件似乎可以作为旧插件安装并运行。

图1. Eclipse中的插件

Eclipse内的OSGi捆绑包
Eclipse,Equinox,OSGi,我的天哪!

OSGi联盟是负责OSGi技术的独立非营利公司。 它在功能上类似于Eclipse Foundation。 OSGi联盟负责产生描述OSGi技术的规范。 简而言之,OSGI技术为应用程序开发提供了一个面向服务的基于组件的平台。 各种实现都基于这些规范。 最受欢迎的实现之一是Equinox,这是Eclipse的规范实现。 OSGi的另一个流行实现是Apache的Felix项目。

在继续进行之前,本文假定您具有Eclipse和OSGi的使用知识。

创建您的OSGi捆绑包

这项冒险的第一步是使用插件开发环境 (PDE)在Eclipse中创建一个简单的OSGi捆绑软件。 为此,我们需要使用PDE创建一个新的插件项目( File> New> Project> Plug-in Project )。 在创建新的插件项目的过程中,请确保设置了正确的选项。 首先,选择您的插件目标平台作为OSGi框架,尤其是Equinox。 最后,为了简洁起见,请使用PDE提供的Hello OSGi Bundle模板(请参见图3)。 现在,我们有了将在本文中使用的捆绑软件。

图3. PDE Hello OSGi捆绑向导

PDE的OSGi框架启动配置
插件和捆绑包:有什么区别

在Eclipse开发人员将应用程序一起黑客入侵的地下室中徘徊,您会听到插件和捆绑软件的魔咒。 有区别吗从营销副总裁的角度来看,这些术语是同义词。 捆绑软件是插件,而插件是捆绑软件。 看来,我们对这两个术语都抱有困惑。 但是,从超级书呆子的角度来看,存在一些争论。 准确地说,Eclipse插件是一个OSGi捆绑软件,它利用了扩展注册表(即,在捆绑软件的根目录中具有plugin-in.xml)。 OSGi捆绑包是OSGi捆绑包。

启动配置完成并准备就绪后,我们可以使用启动配置对话框中的“运行”按钮启动捆绑包。 完成此操作后,您将看到类似于图5的结果。

在图5中,我们看到Hello包已启动(使用控制台上打印的HelloWorld消息,表明我们的包已启动),并且显示提示符。 OSGi提示符与DOS或Bash提示符相似,因为您可以输入对OSGi实例起作用的命令。 在这种情况下,我们发出了命令,该命令显示所有内容的快速状态。 我鼓励您在普通的Eclipse实例中尝试使用此命令,以了解所有内容只是底层的OSGi捆绑包。 要获得用于普通Eclipse实例的OSGi控制台,只需使用参数启动Eclipse。

图5.我们的首次启动

启动和停止捆绑

添加,删除和更新捆绑

OSGi系统的另一个强大方面是能够在正在运行的OSGi实例中添加,删除和更新捆绑软件-无需重新启动Java?虚拟机即可。 图7演示了如何安装和卸载捆绑软件。

图7.安装和卸载捆绑软件

控制台诊断

有用的控制台命令摘要

表1.有用的控制台命令
命令 描述
开始 使用给定的ID或符号名称启动捆绑包
停止提供ID或符号名的捆绑包
安装 给当前实例添加给定URL的捆绑软件
卸载 给定当前实例的URL,删除捆绑
更新 给定当前实例的URL,更新一个包
活性 列出当前实例中的所有活动捆绑
标头 列出具有ID或符号名的捆绑包的标题
ss 列出当前实例中注册的所有捆绑包的简短状态
服务 列出经过适当过滤的服务
诊断 在给定ID或符号名的捆绑软件上运行诊断

还有许多其他OSGi命令可用。 这里列出的是我发现最有用的。 要获取所有命令的列表,只需在控制台中键入 。

扩展控制台

人们说Eclipse的优点在于它的可扩展性。 控制台可以类似的方式扩展。 这很重要,因为作为开发人员,您可以为用户提供某种服务。 通过扩展控制台,可以使高级用户或管理员能够调试有关服务的问题。

控制台没有使用熟悉的扩展点,而是具有简单的可扩展性机制。 让我们通过几个示例来说明控制台的可扩展性。

ame,OSGi风格

使用过UNIX?风格的系统的任何人都熟悉命令,该命令会打印名称,版本以及有关正在运行的操作系统的其他信息。 在OSGi上下文中,可以以多种UNIX风格相同的方式来实现OSGi控制台的各种实现(例如Knopflerfish )。

扩展OSGi控制台最重要的部分是界面。 有兴趣扩展控制台的客户必须实现此目的。 一旦实现,下一步就是以开头的方法名称。 这些方法将代表控制台中可用的命令。 就这么简单! 有关示例,请参见清单1。

清单1. OSGi uname

捆绑与存在主义

捆绑软件可能永远不会质疑它们的存在,但是这是一个简单的示例,显示捆绑软件是香草捆绑软件还是Eclipse插件。 (请记住,两者仍然是捆绑包!)清单2通过添加一个新方法并修改方法在上一个示例的基础上构建。

清单2.修改

我们的劳动成果如图9所示。

图9.扩展控制台的结果

Quake控制台

翻译自: https://www.ibm.com/developerworks/opensource/library/os-ecl-osgiconsole/index.html

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树控制执行流程if-else91318 人正在系统学习中 相关资源:TranslationLoaderBundle:具有数据库翻译加载器的Symfony2捆绑软件

来源:cuxiong8996

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年6月2日
下一篇 2020年6月2日

相关推荐