您好, 访客   登录/注册

OSGi动态组件管理平台的研究与实现

来源:用户上传      作者: 尹维春 李青峰

  摘 要:本文基于OSGi规范和OSGI框架的运行原理和编程模式对OSGi框架应用程序的设计方法和利弊进行深入的探讨,并且完成了动态组件管理平台和Web服务动态管理模块的实现。
  关键词:OSGi框架 动态组件管理 动态管理模块
  中图分类号:TP31 文献标识码:A 文章编号:1672-3791(2013)07(b)-0030-01
  本文以Eclipse基金会实现的OSGi规范的Equinox框架为核心,以Spring Dynamic Module框架作为OSGi环境下的Web容器,使用Apache CXF DOSGi框架作为在OSGi环境中发布和部署Web Service的框架提出了OSGi的动态组件管理平台的设计。这个平台以OSGi插件的形式开发,可以直接嵌入到基于OSGi的系统中,实现对OSGi环境的动态化远程管理,使开发者可以在远程安装、启动、停止、更新、卸载插件等操作,还可以做到动态的进行的Web Service的发布和注销,为应用程序开发人员和部署人员提供了一个远程管理应用程序的平台。所设计的这个平台具有易部署、易使用、易管理、即安即有、即删即无的特点。
  1 OSGi规范
  OSGi规范是OSGi联盟制定的一个基于Java语言的服务规范。其核心框架规范提供了一个通用、安全、可管理的支持以Bundle(在OSGi规范中,将模块命名为Bundle,在OSGi框架中采用Bundle的方式来组织和部署系统)方式下载并扩展布署的Java框架[1]。
  OSGi的体系结构主要包括5个部分:(1)运行环境是Bundle应用所依赖运行的Java执行环境。(2)模块层定义了Bundle应用的加载策略。(3)生命周期层可以动态地对Bundle进行安装、启动、停止、升级和卸载等操作,该层提供了一组API来控制Bundle的运行时操作。(4)服务层定义了一个集成在生命周期层中的动态协作模型,是发布、动态寻找、绑定的服务模型。(5)安全层的安全管理是基于Java2安全体系的,贯穿在OSGi平台的所有层中,它能够对部署在OSGi运行环境中的Bundle应用进行详细的管理控制[2]。
  2 动态组件管理平台的实现
  本系统的核心模块是OSGi Web Admin模块,其主体功能是给用户提供的B/S架构的用户界面,使得用户可以在浏览器上浏览网页的形式对OSGi环境进行一些操作,浏览器展示的页面接收到这些操作之后发送给后台编写好的Web Bundle,然后再Web Bundle中通过BundleContext对OSGi容器进行相应的控制和操作[3]。这些操作包括:Bundle的安装、启动、停止、更新、卸载等。这个系统中有个很重要却比较难实现的部分,就是Web Bundle的上传安装和上传更新。
  在OSGi环境中,通过每个Bundle的BundleContext对象可以获取到OSGi环境中运行的所有的Bundle的各种信息,也可以对OSGi环境进行各种管理,其中核心的函数有update、installBundle、start、stop等等。
  在系统的设计中比较关键且难度高的模块是Web Bundle的安装和更新。在Java中的Web应用程序中有很多的资源文件,如:html文件、图片文件、资源文件、样式列表文件、jsp文件、java源文件等等。为了不忽略掉大部分和Web应用程序有关的资源文件,在设计本系统的时候采用了对Web Bundle进行zip打包;另一方面,为了不降低这个系统的可用性和可操作性,本系统在后台实现了一个Web应用程序的编译模块,只要用户把自己开发的Web应用程序直接打包成Zip包,上传到Web Admin Bundle,OSGi环境中的Compiler模块便会完成对这个Web Bundle的编译工作。
  3 Web服务动态管理模块设计
  基于OSGi的Web服务的动态管理的实现主要分为以下三个方面。首先,这个模块需要设计成一个OSGi插件(图2中的WebServiceFactory模块)运行在OSGi环境中并能和上一章中实现的动态组件管理模块系统工作。其次,需要实现Web服务的动态发布和动态注销。最后,需要实现能够在整个OSGi环境中搜索可用的Web服务并呈现给管理员,是管理员能够随时详细的了解系统中运行的Web服务的详细信息。
  基于OSGi的Web服务动态管理模块的前台展示出OSGi环境中所有可用的Web服务,也就是WebService爬虫程序搜索的结果。点击“Add a New Endpoint”按钮就会发布一个新的Web服务,在这里添加所要发布的Web服务的地址便可实现Web服务的动态发布,发布成功后点击“Remove”按钮即可删除相应的Web服务,而点击“WSDL”按钮可以查看相应Web服务的WSDL描述,完成基于OSGi的Web服务动态管理模块的实现。
  4 结论
  OSGi给Java带来了模块化,这个技术在Java能触及的应用领域都得到很很广泛的关注和应用。本文研究并实现了基于OSGi的动态组件管理平台和Web服务动态管理模块,并对OSGi的企业级应用开发模式进行了深入的研究。对于Web日益兴盛的今天具有一定实用性,对于把OSGi应用到企业级领域具有一定的推广意义。
  参考文献
  [1] 林昊,曾宪杰.OSGI原理与最佳实践[M].北京:电子工业出版社,2009.
  [2] 刘陈,张峰.基于OSGi的短信平台设计[J].航空计算技术,2008(6).
  [3] 一种基于OSGi的服务动态化模型应用[J].计算机系统应用,2011(12).
  [4] 周明辉,张益菲,梅宏.面向OSGi的应用服务器重构[J].计算机科学与探索,2010(2).
转载注明来源:https://www.xzbu.com/8/view-4562672.htm