从V3.0开始,Eclipse选择了开放服务网关计划(OSGi)来代替早期版本中摇摇欲坠的Eclipse插件技术,从而实现了巨大飞跃。 这种过渡对用户几乎是透明的,因为插件似乎可以作为旧插件安装并运行。
图1. Eclipse中的插件
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捆绑向导
插件和捆绑包:有什么区别
在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.扩展控制台的结果
翻译自: https://www.ibm.com/developerworks/opensource/library/os-ecl-osgiconsole/index.html
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树控制执行流程if-else91318 人正在系统学习中 相关资源:TranslationLoaderBundle:具有数据库翻译加载器的Symfony2捆绑软件
来源:cuxiong8996
声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!