浅析OSGi技术_第1页
浅析OSGi技术_第2页
浅析OSGi技术_第3页
浅析OSGi技术_第4页
浅析OSGi技术_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浅析OSGI技术中国银行常德分行李宇龙201212312目录浅析OSGI技术1一,面向对象和面向服务的工厂模式的设计区别3二,用OSGI技术进行工厂模式设计,剖析模块间的依赖关系51,开发准备62,开发过程6A,创建接口模块COMALONOSGIFRUITINTERF6B,创建服务模块COMALONOSGIFRUITAPPLE8C,创建服务模块COMALONOSGIFRUITORANGER9D,VIRGO中加载两个服务模块,以便下一步创建WEB应用模块时调用。10E,创建WEB应用模块COMALONOSGIFRUITAPPS103,测试13三,OSGI技术应用前景143概述OSGI(OPENSERVICEGATEWAYINITIATIVE)是一个基于JAVA语言,为规范接口服务所提供的服务平台(OSGISERVICEPLATFORM)。OSGI技术的神奇作用,是让JAVA程序模块化,在系统不停止服务情况下,实现程序“即插即用即拔即无”,动态部署各应用程序。与传统的程序设计模式相比,具有更灵活的扩展性。模块化技术不必按面向对象思想,把重点放在高度抽象出对象模型设计上。而面对服务,根据实际业务需求划分出各服务接口的边界和各服务接口间的依赖关系,这可让JAVA程序按服务功能不同,分成不同的模块,模块间通过服务来调用。从而提高了程序的内聚性,降低了程序的耦合度。目前能找到的OSGI中文参考资料很少,想了解其内部运行机制并不容易。笔者经过反复摸索和测试,从工厂设计模式着手分析,更直观说明OSGI的实质。一,面向对象和面向服务的工厂模式的设计区别JAVA设计模式之一,工厂设计模式是为了解决接口选择自身实现类的问题。面向对象的最佳做法是在应用端中输入实现类,或用反射为接口找到实现类,但要在配置文件里修改,并需重启服务器才能更新接口的实现。而面向服务的模块化设计是把同一个接口的N个实现类,划分为N个BUNDLE项目(模块),并完全封装,不再4更改,也就不再编译,通过热拔插装缷服务模块,进行实现类的选择。请看实例比较。面向对象的工厂模式,把所有接口、实现、应用都放在一个项目里。以下实例代码,把“水果”抽象为一个接口,让”苹果”和”桔子”实现了水果的EAT方法。在选择各种水果时,需要输入”APPLE”或”ORANGE”,才能进行具体的服务。其代码块与面向服务方式所划分模块的对应关系块如图。面向服务的工厂模式,把接口(COMALONOSGIFRUITINTERF)划为公共模块;实现类(COMALONOSGIFRUITAPPLE和COMALONOSGIFRUITORANGER)划为服务模块;为接口指定服务的工作5交给VIRGO服务器进行模块装卸;调用服务部分(COMALONOSGIFRUITAPPS)被单独划作WEB应用模块。以下是各BUNDLE模块的结构简图。显而易见,OSGI是把JAVA代码块变成了相应的模块。虽然把简单的事情变繁杂,但这样会使程序粒度更细,封装更完全,解耦性更好,服务扩展更具灵活性。二,用OSGI技术进行工厂模式设计,剖析模块间的依赖关系各模块通过MANIFESTMF文件导出本模块JAR包,导入支持运行的JAR包。通过配置文件定制、发布、调用模块提供的服务。由此6有效组织和协调系统的服务部署。为了深入了解OSGI运行机制,笔者把面向对象的“水果”实例改用OSGI技术进行面向服务的工厂模式设计,剖析模块间的依赖关系,加深对接口调用服务即程序“热拔插”的OSGI技术特色的认识。1,开发准备开发工具SPRING社区提供的ECLIPSESPRINGSOURCETOOLSUITE250RELEASEWEB服务器前身是SPRINGDM的VIRGOTOMCATSERVER302RELEASE支持包共有49个包1个库。限于篇幅和阅读习惯(包括下面各模块的源代码),不宜列出。如需支持包和源代码可致电笔部署支持包把包拷贝到VIRGOTOMCATSERVER302RELEASEREPOSITORYEXT或USR文件夹下。2,开发过程A,创建接口模块COMALONOSGIFRUITINTERF文件结构和接口FRUITJAVA代码7MANIFESTMF配置文件,导出接口包把COMALONOSGIFRUITINTERF打成JAR包,替换包中MANIFESTMF配置文件为以上的MANIFESTMF配置文件。启动VIRGO服务把包拷贝到VIRGOTOMCATSERVER302RELEASEREPOSITORYEXT或USR文件夹和VIRGOTOMCATSERVER302RELEASEPICKUP文件夹下。VIRGO随即热部署。在HTTP/LOCALHOST8088的VIRGO服务管理(LOGINNAMEADMIN,PASSWORDSPRINGSOURCE)中可以看到序号132的INTERF已经ACTIVE。8B,创建服务模块COMALONOSGIFRUITAPPLE文件结构和“水果”接口FRUIT的实现类APPLEJAVA代码MANIFESTMF配置文件,导入INTERF。注意上图的红线划出的JAR,是MANIFESTMF配置文件导入INTERF后,自动产生。如果不能自动产生BUNDLEDEPENDENCIES模块支持包,请如下图操作即可。9用实现类APPLE定制(注册)服务用接口发布服务10C,创建服务模块COMALONOSGIFRUITORANGER与创建COMALONOSGIFRUITAPPLE模块方法一样,不再赘述。D,在VIRGO中加载两个服务模块,以便下一步创建WEB应用模块时调用。E,创建WEB应用模块COMALONOSGIFRUITAPPS文件结构图(文件太多,有用的已经红线标注)和CONTROLLER应用类FRUIDEMOJAVA11在MANIFESTMF配置文件中,导入INTERF和49个支持包及1个库。再定义WEBCONTEXTPATH访问网站的路径。WEBXML文件定义SERVLET名称及拦截器等ALONSERVLETXML文件定义网站的SERVLET、配置处理前台REQUEST请求12的CONTROLLER类的文件夹以及RESPONSE所返回网页的命名规范等。注本文件名中ALON与WEBXML定义的SERVLET名称一致APPLICATIONCONTEXTXML文件,通过接口调用服务网站前端网页LOGINJSP只有一个按键,作用是ACTION激活后台的CONTROLLER类FRUITDEMOJAVA。其运行机制是先由APPLICATIONCONTEXTXML调用的INTERF接口FRUIT的服务注入到FRUITDEMOJAVA,这样代码中只使用接口,选择实现类是桔子ORANGE还是苹果APPLE,交由VIRGO装卸ORANGE或APPLE模块完成。CONTROLLER处理后返回网页是EATAPPLEJSP和EATORANGEJSP。VIRGO中添加WEB应用模块COMALONOSGIFRUITAPPS。通过以上开发过程,OSGI运行机制可概括为用实现类定制服务,用接口发布服务,用接口调用服务。133,测试访问VIRGO服务管理,看到一个接口模块、一个应用模块和两个服务模块均已成功添加。接口会选择序号在先的APPLE服务使用,以下测试将会验证。访问HTTP/LOCALHOST8088/ALON/LOGINJSP点击按钮,即将返回“吃苹果”结果与预料一样,接口会选择序号在先的服务使用。现在VIRGO服务不停止,把APPLE卸载掉,结果应该是“吃桔子”。再又把APPLE模块装载,结果仍是“吃桔子”。笔者不再赘述测试结果,相信大家尝试后,应该能领略到OSGI技术的奇妙之处。14三,OSGI技术应用前景自OSGI规范于1999年作为家庭自动控制中的网关GATEWAY使用开始,陆续作为核心平台已在生产和开源项目领域被很多技术接受。2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论