火龙果软件OSGI技术实用分析(初稿)_第1页
火龙果软件OSGI技术实用分析(初稿)_第2页
火龙果软件OSGI技术实用分析(初稿)_第3页
火龙果软件OSGI技术实用分析(初稿)_第4页
火龙果软件OSGI技术实用分析(初稿)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

OSGI技术实用分析内容介绍OSGI概要介绍 OSGI的Bundle

Web开发实例OSGI技术的实用价值总结OSGi概要介绍OSGi最早是OpenServicesGatewayInitiative的缩写,是构建面向服务应用的一套规范。在Java中的应用为动态模块系统,作为模块化开发部署框架,更易于划分模块和管理模块之间的各种依赖关系OSGiAliance是一个非盈利的合作组织负责制订发布OSGI规范ApacheFelix,EclipseEquinox,SpringDM都是OSGi规范的具体实现框架OSGI从2000年-2012年一共发布了5个版本,OSGi的名气是随着Eclipse3.0正式采用OSGi为模块化框架而发展起来的,逐渐被IBM,Oracle,Sun作为Java标准OSGi

基本介绍后台背景发展历史OSGi的三个基本概念BundleLifeCycleService一般表现为一个含有OSGI配置描述信息(例如MANIFEST.MF文件),类,资源和其他jar包的综合Jar包。特指Bundle的生命周期,包含从安装,就绪,启动,运行活跃,卸载,停止,等各个时期Service一般被定义为一个接口,Bundle可以负责实现具体的接口,在ServiceRegistry模块中注册这个Service,可以为其他Bundle提供服务OSGi最重要的三个基本概念术语了解OSGi的第一步安装EclipseHelios动手实践自己第一个Bundle理解OSGi

Bundle的生命周期从最小的一个OSGiWebDemo开始Eclipse与OSGi创建第一个Bundle1432Bundle的典型结构Activator是每个Bundle缺省的装载类.OSGi框架启动或停止Bundle都默认调用该类的Start/Stop方法OSGiBundle运行调试Bundle运行背后的故事Bundle运行的优先级设置StartLevelPID越小的越优先Bundle的生命周期管理对象都是有生命的EclipseEquinox支持OSGi常用控制命令Start/stop/install/uninstall

<PID>Help可查看支持的各种bundle管理命令快速构建一个OSGiWeb应用所有的Web应用的本质都是从前台获取用户输入的信息,送入后台处理后,再返回给前台用户展示。其本质都是用户交互体验OSGiWeb应用就是构建一个全部由OSGiBundle组成的Web应用。所有前台交互,后台处理等业务逻辑都是由一个个Bundle负责处理本Demo实现的功能为用户在html页面上输入一个英文单词,提交后台查询后返回对应的中文解释,如果没有结果则返回N/A,类似于一个在线字典Web

Bundle应用Demo的结构DictQueryLocalDictQueryDictQueryWebOSGiEquinoxRemoteDictQuery提供远程字典查询服务的Bundle

包含必须的Http,Servlet服务和其他OSGi框架所需要的基本核心Bundle

字典查询的接口Bundle提供本地字典查询服务的Bundle负责Web前段页面和后台Servlet的Bundle其余BundleOSGiBundle的Package控制query;version="1.0.0"Import-PackageExport-PackageDictQueryOSGi作为动态模块化Java框架的核心功能就是可以控制Bundle中Package的导入和导出,这是对java自身import功能局限的突破org.osgi.framework;version="1.3.0"LocalDictQueryRemoteDictQueryDictQueryWebjavax.servlet;version="2.4.0",javax.servlet.http;version=org.osgi.framework;version=org.osgi.service.http;version,

query;version="1.0.0"org.osgi.framework;version="1.3.0"query;version="1.0.0"org.osgi.framework;version="1.3.0"query;version="1.0.0"部分代码示例-1DictQueryBundle中的query/QueryServiceLocalDictQueryBundle中LocalDictQueryServiceImpl部分代码示例-2RemoteDictQueryBundle中的RemoteDictQueryServiceImpl在LocalDictQuey的Activator中注册服务唯一的不同就是构建的字典内容和LocalDictQuery不同关键的DictQueryWebBundleDictQueryWeb中DictQueryServlet只和DictQuery的QueryService交互最后的一环与HttpService交互,进行Web资源(包含html和servlet)的服务注册一个典型的主从表结构的表现-主从结构是所有实体对象模型中最常见的对象类型,关系数据库的最典型类型就是主从类型-主从结构在好的Java业务体系中也一般是包装成为一个整体的业务对象对外进行数据交互-ChangeHistory(复合的抽象对象)-所有的ApacheOfBiz实体引擎的描述信息都是通过EntityXXX.xml表示。所有描述对象的java类都是GenericValueChangGroup是主表ChangeItem是从表从实际业务的对象设计角度出发OfBiz的实体引擎的高度概括性Demo最终效果OSGi技术价值分析解决了Java语言本身在模块化上的重大缺陷,由于Java本身语言的特点必须暴露类结构,违反了结构化设计的神圣准则:低耦合、高一致性OSGi秉承松耦合髙一致性的原则来解决Java的重用问题。OSGi提供了一个模块框架,这个框架可以管理模块,可以动态加载模块;模块之间通过服务接口协作。模块在OSGi里被叫做Bundle。OSGi使用微内核+系统Bundle+应用Bundle设计。微内核保证了髙一致性,基于Bundle的设计保证了松耦合。OSGi最有价值的3个功能:(1)Bundle管理;

(2)Bundle的动态加载;

(3)保证Bundle间使用服务机制来交互。OSGi在商用J2EE平台上已经证明了成功:IBMWAS6.1,EclipseAtlassianConfluence&Jira,SpringDM等等。其性能接受了考验总结OSGi发展了12年,已经成了Java模块化的实际技术标准JSR-232,JSR-291,彻底取代了Sun原来自己定义的JSR-277OSGi可以和主流的J2EEWeb平台无缝集成,侵入性小,技术转型的风险较低OSGi技术国内目前采用的还不多,大多还只是停留在初步了解的地步。其拓展的潜力很大OSGi不

温馨提示

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

评论

0/150

提交评论