网站大量收购独家精品文档,联系QQ:2885784924

osgi简介及实例应用.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
osgi简介及实例应用

软件的模块越来越插件化发展了,连硬件都处处热插拔,软件更当如此。记原来有个 JPF(Java Plugin Framework),也能实现动态插件化,但要是有个业界标准的东西一般来说会更好的。于是轮到 OSGI(Open Service Gateway Initiative) 登台,OSGI 出来也有好几个年头了,应用也轰轰烈烈的,比如 Eclipse 3 开始不再使用原来的插件体系,完全用 OSGI 搭建。WebSphere 6.1 也全面改用 OSGI;JBoss、WebLogic、Spring DM,甚至是 BMW 车的控制系统中都得到了很好的应用。 前面讲到可以用 OSGI 作为你的微内核,微内核的好处可以打个这样的比方:一台 Linux 服务器出故障了,应用程序坏了、某些服务不能访问等,但只要它还来连入网络,SSH 还是活的,我们就有办法进 去修复它,想安装、卸载什么都行。 OSGI 也能让你动态的增减服务,或者说动态的加载卸载类等资源。OSGI 中的资源称作 Bundle,所以如果是基于 OSGI 的程序,能够在网上找到许多有用的 Bundle 直接在线插入到你的软件系统中。Bundle 其实就是一个 jar 文件,只是在 MANIFEST.MF 中有些特殊的定义,每个 Bundle 靠实现的 BundleActivator 的去控制 Bundle 的生命周期和发布、监听框架的事件,或者说与框架进行通信。 OSGI 是个规范,它的实现目前有 Equinox、Knopflerfish、Oscar、Felix 等,由于天天与我打交道的是 Eclipse 以及它背后的 Equinox,所以这里的示例程序就使用 Equinox 吧。 本例是基于 《OSGI实战》这一 PDF 文档稍加改造而成,比原例要简单,因为尽量避免了引入其他的 Bundle,不是 Web?? 应用,而是做成了一个窗口程序。 一样的,也是个用户登陆验证程序,程序运行中可以动态切换验证方式(数据库验证或 Ldap 验证),也可以插入新的验证方式,如文件验证方式。基于此,我们需要建立四个 Bundle,分别为: 1. UserValidatorBundle -- 定义了 Validator 接口方法,此例中还作为与用户交互的 Bundle 2. DbValidatorBundle -- 实现了 Validator 方法,用数据库进行验证的 Bundle 3. LdapValidatorBundle -- 实现了 Validator 方法,用 Ldap 进行验证的 Bundle 4. FileValidatorBundle -- 实现了 Validator 方法,用文件进行验证的 Bundle 定义接口的 Bundle 需要导出定义接口的 package,而实现接口定义的 Bundle 需要导入前面导出的接口 package。 OSGI 有点像 SPI(Service Provider Interface) 模式,上层有个接口定义,然后有多几可能的实现提供者,运行时可以选择哪种实现,例如 common-logging 与 log4j, jdk log 那样的关系,但是 SPI 不具有 OSGI 的动态性。同样,在 OSGI 的某个 Bundle 中也需要定义一个服务接口,没有接口规约就没法指导方法如何去调用。映射到 SPI 模式就是,UserValidatorBundle 为服务定义者,其他 Bundle 为服务提供者。 在 Eclipse 中直接能开发 OSGI 的 Bundle,并支持可视化操作与调试。因为 Eclipse 本身就是用的 Equinox,所以不需要单独下载 Equinox SDK。只要你电脑上有 Eclipse,马上就可以窥探一下 Equinox 的模样。 Eclipse 中菜单 Run - Run Configurations 窗口中,左边 OSGi Framework 中,右键 new,然后 Deselect All,只勾选几个 Bundle,点击右下角的 Run 按钮就行啦。 这时候会在 Eclipse 的 Console 窗口中出现一个 osgi 提示符,在其中可以输入各种命令,如 ss 显示所有的 Bundle,如图: 也可以安装卸载 Bundle、启用停止 Bundle 等等。当然实际做出来的 OSGI 程序不会去带那么一个 osgi 控制台的,osgi 控制台下的操作都可以在你的程序中完成,或者作为一个真正的后台管理界面,用户是不会觉察到的。之所以放个 osgi 出来,是为了开发、测试方便。 我们现在要做的就是像 osgi 控制台下用 ss 命令显示出来的那种 Bundle。本例中所用的 Ecli

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档