已阅读5页,还剩73页未读, 继续免费阅读
(计算机应用技术专业论文)基于osgi的企业级应用模块化框架研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江理工大学硕士学位论文 摘要 随着技术的进步和业务需求的不断复杂,客观上要求软件架构技术能够支持一些新的 特性,包括异构模块动态部署、增量式模块开发、服务动态管理、敏捷性开发等。 本文在分析j a v a 对模块化支持的不足之处的基础上,介绍了o s g i 的模块化思想,以 及o s g i 在构建插件体系结构方面的优势。分析了传统的企业应用集成解决方案与s o a 架 构实现技术w e bs e r v i c e 的优缺点。结合o s g i 与s o a 的优点,以o s g i 插件体系思想为基 础,提出一个即插即用面向服务的模块化框架模型。该框架将服务请求实体层与资源实体 层逻辑分离开来,服务注册管理中心来提供统一的服务注册、路由、组合以及消息传递等 机制。给出了将w e b 服务器与s e r v l e t 容器中嵌入e q u i n o x 的解决方案,分析研究了服务 插件的调用方式、o s g i 服务封装方法,并参考e c l i p s e 的e x t e n s i o nr e g i s t r y 技术给出 框架的扩展方案。 基于上述框架,采用o s g ir 4 实现e q u i n o x 、w e bs e r v i c e 、x m l 等技术设计了一个虚 拟天文台系统。并且将o s g i 与h i b e r n a t e ,s p r i n g 等开源框架整合,能够更加方便的进 行工程的开发并对系统进行维护。通过h i b e r n a t e 技术实现了对象的持久化,利用s p r i n g 技术实现了整个工程中组件的控制。通过s p r i n g 技术跟h i b e r n a t e 技术相结合,使得控 制反转应用于组件服务和相关的事务关系,实现集成业务。数据库方面支持o r a c l e , s q l s e r v e r ,m y s q l 等数据库,能够根据不同的驱动进行连接。 相对于一般的w e bs e r v i c e 系统,该系统能够稳定的不间断运行时实现动态的业务变 更,而且实现所有的用户共同使用而不产生干扰。具有可插拔、可动态部署、资源服务细 节无关、模块依赖最小化等特点。具有较好的应用前景。 关键词:框架;o s g i ;组件服务;w e bs e r v i c e ;j a v a 浙江理工大学硕士学位论文 a b s t r a c t w i t ht h ep r o g r e s so ft e c h n o l o g ya n dt h ec o n t i n u i n gc o m p l e x i t yo fb u s i n e s sn e e d s ,s o r w a r e a r c h i t e c t u r e sa r er e q u i r e dt os u p p o r tan u m b e ro fn e wf e a t u r e s ,i n c l u d i n gt h ed e p l o y m e n to f h e t e r o g e n e o u sd y n a m i cm o d u l e ,i n c r e m e n t a l i n m o d u l e d e v e l o p m e n t , d y n a m i c s e r v i c e m a n a g e m e n t , a g i l ed e v e l o p m e n t b a s e do nt h ea n a l y s i st oi n a d e q u a c i e so fj a v am o d u l a rs u p p o r t , t h i sd i s s e r t a t i o ni n t r o d u c e s o s g i sm o d u l a ri d e a , a sw e l la st h ea d v a n t a g e so fo s g io nb u i l d i n gp l u g i na r c h i t e c t u r e i ta l s o a n a l y s e s t h et r a d i t i o n a ls o l u t i o n st oe n t e r p r i s e a p p l i c a t i o ni n t e g r a t i o n ,a n da n a l y s e st h e a d v a n t a g e sa n dd i s a d v a n t a g e so fw e bs e r v i c ew h i c hi s as o aa r c h i t e c t u r ei m p l e m e n t a t i o n t e c h n o l o g y c o m b i n i n gt h ea d v a n t a g e so fs o aa r c h i t e c t u r e & o s g is p e c i f i c a t i o n ,b a s e do n o s g ip l u g i ns y s t e m ,ak i n do fm o d u l a rs e r v i c e p l u go r i e n t e df r a m e w o r ki sp r o p o s e d t h e f r a m e w o r ks e p a r a t e st h es e r v i c er e q u e s te n t i t yl a y e rf r o mr e s o u r c ee n t i t yl a y e rl o g i c a l l y m e a n w h i l e ,s e r v i c er e g i s t e rm a n a g e m e n tl a y e rh a sp r o v i d e da ne n t i r es y s t e mf o rs e r v i c e r e q u e s te n t i t yl a y e ra n dr e s o u r c ee n t i t yl a y e rt or e g i s t e r , r o u t e ,c o m b i n ea n dt r a n s m i tm e s s a g e s t h i sa r t i c l eh a sp r o v i d e dt h es o l u t i o no fi m b e d d i n gw e bs e r v e ra n ds e r v l e tc o n t a i n e ri ne q u i n o x i na d d i t i o n , t h ea r t i c l ea l s oa n a l y s e sa n dr e s e a r c h e st h em e t h o do fp l u g i nt r a n s f e r r i n gw a y , o s g is e r v i c ee n c a p s u l a t i n gm e t h o d ,t h ee x p a n s i o nt h a te x t e n s i o nr e g i s t r yt e c h n o l o g yo f c o n s u l t i n ge c l i p s ep r o v i d e s b a s e do nt h ea b o v ef r a m e w o r k ,b yu s i n go s g i r 4i m p l e m e n t a t i o ne q u i n o x ,w e bs e r v i c e , x m la n do t h e rt e c h n o l o g y , w ed e s i g n e dav i r t u a lo b s e r v a t o r ys y s t e m i n t e g r a t i n go s g lw i t h h i b e r n a t e ,s p r i n ga n do t h e ro p e n - s o u r c ef r a m e w o r k ,w ec a nd e v e l o pa n dm a i n t a i nt h ep r o j e c t m o r ec o n v e n i e n t l y u s i n gh i b e r n a t et e c h n i q u et om a k et h eo b j e c t sp r o p e r t i e ss t o r ep e r m a n e n t l y w h i l eu s i n gs p r i n gt e c h n i q u et oa c h i e v et h ec o n t r o li nt h ew h o l ep r o j e c t s w i t ht h ei n t e g r a t i o no f h i b e r n a t ea n ds p r i n g ,t h ew h o l ep r o j e c tu s ei o ci nc o m p o n e n t s s e r v i c e sa n dt h er e l a t i o n s b e t w e e nt r a n s a c t i o n st om a k et h ep r o j e c ta c h i e v et h ei n t e g r a t i o nb u s i n e s s t h es y s t e ms u p p o r t s t h eu s u a ld a t a b a s es u c ha so r a c l e ,s q ls e r v e r , m y s q la n ds oo n i tu s ed i f f e r e n td r i v e rt om a k e t h ed a t a b a s e sw o r kf i n e c o m p a r e d 诵m t h et r a d i t i o n a lw e bs e r v i c es y s t e m ,t h i ss y s t e mc a nk e e pr u n n i n gw i t h o u t p a u s ew h e nd os o m ec h a n g e si ns e r v i c ea n dk e e pas t e a d ys t a t e a l lo ft h eu s e r sc a nu s ei t i i 浙江理工大学硕+ 学位论文 t o g e t h e rw i t h o u ta n yc o n f l i c t t h ef r a m e w o r kh a sm a n ym e r i t sa st h ew h o l ei m p l e m e n t a t i o n s y s t e mc a l lr e a l i z et h es y s t e mp l u g - i nf u n c t i o n , c h a n g es y s t e m a t i cb e h a v i o rd y n a m i c a l l ya n d m i n i m i z ed e p e n d e n c eo nm o d u l e ,e t c i tc a l lb ed y n a m i c a l l yr e m o v e do rd e p l o y e d , i r r e l e v a n tt o t h ed e t a i l so fr e s o u r c e sa n ds e r v i c e s ,m o d u l e s ,a n dd e p e n d e n t sl e a s to nt h em o d u l e i th a sv e r y g o o dp r o s p e c t s k e yw o r d s :j a v a , f r a m e w o r k , o s g i ,c o m p o n e n ts e r vic e ,w e bs e r v i c e i i i 浙江理工大学学位论文原创性声明 本人郑重声明:我恪守学术道德,崇尚严谨学风。所呈交的学位论文,是本人在导师 的指导下,独立进行研究工作所取得的成果。除文中已明确注明和引用的内容外,本论文 不包含任何其他个人或集体已经发表或撰写过的作品及成果的内容。论文为本人亲自撰 写,我对所写的内容负责,并完全意识到本声明的法律结果由本人承担。 学位论文作者签名:强沼勿l 日期:力夕年月,留日 浙江理工大学学位论文版权使用授权书 学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家 有关部门或机构送交论文的复印件和电子版,允许论文被查阅或借阅。本人授权浙江理工 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印 或扫描等复制手段保存和汇编本学位论文。 本学位论文属于 保密口,在年解密后使用本版权书。 不保密口 。 学位论文作者签名:浓;易钐l 日期:刀年么月谚e l 浙江理工大学硕士学位论文 第一章绪论 软件框架是一种微体系结构,为特定领域内的软件系统提供实现模板,它可以是一个 将要被扩展或复用的子系统【l 】。软件框架是软件开发过程中提取特定领域软件的共性部分 形成的体系结构,框架提供了可在应用程序之间共享的可覆用的公共结构体。具有面向实 现的特性,反映了应用的体系结构,是面向特定领域的可复用软件制品。开发者把框架融 入应用程序,并加以扩展,以满足他们特定的需要。为解决复杂多变环境中软件开发无法 适应需求变化的问题、新增异构模块的问题、软件模块动态部署问题以及逻辑功能可重用 问题,需要设计具有可扩展、支持热部署的自适应软件框架。 本文在深入研究o s g ir 4 规范的基础上,采用支持增量式模块开发和软件对象动态部 署的方法,结合面向服务的设计思想,最终形成了基于o s g i 的面向服务的模块化框架。 本章主要对课题的研究背景、研究意义、国内外研究现状以及论文内容和论文组织结构进 行介绍。 1 1 研究背景 j a v a 在取得巨大成功的同时也变得越来越复杂性。现在的j a v ae e t 2 规范家族覆盖2 6 项技术,包括对使用c o r b a ,s o a p 和r m i 栈进行互操作的需求。最终导致j a v a 企业服务 器变得笨重和复杂。一个包括数以百计的库文件的平台,必然存在潜在的版本冲突。为解 决好这个问题,许多服务器供应商已经或正在使用j a v a 模块化技术重建他们的组件模型, o s g i 技术【3 ,4 ,5 1 就是为解决此类问题而设计的模块化技术。i b m 的w e b s p h e r e6 1 现在已经 完全重新组装为一套o s g ib u n d l e 。两大b e a 关键产品叫e b l o g i ce v e n t 服务器和 w e b l o g i c 实时服务器已经在使用o s g i 标准重建的m i c r o s e r v i c e 架构( m s a ) ,而即将推 出w e b l o g i c1 0 3 发布版本也将使用这一体系结构。j b o s s 也再造了其现有的 m i c r o c o n t a i n e r 来整合o s g i 。s p r i n g s o u r c e 新发布的应用平台中的d ms e r v e r 也是构建 在s p r i n g 、o s g i 和a p a c h et o m c a t 之上的模块化应用服务器【6 】。 从开发的角度,软件的复杂性有很大一部分是由于缩短了产品的周期,以及功能性需 求的大幅度增加,为了适应不同环境的需要产生的同一产品的多个版本。这种趋势导致软 件的成本几乎占据任何一个软件开发商的开发成本的很高百分比【1 7 1 。 目前,软件开发大部分是在一个新的环境中利用已有的系统功能进行的。近2 0 年来, 浙江理工大学硕士学位论文 基于大量的标准的模块开发已经成为可能,并且在现在的软件产品发挥很重要的作用。最 好的例子就是开源软件的成功。但是,这些开源软件的使用不是没有问题的。在一个软件 产品中集成一些不同的开源软件是很可怕的事情。这些开源软件彼此独立,任何一个开源 软件中的某些功能即使在集成中没有用到,但是作为开源软件的一部分,还是必须保留的。 这导致了软件更加的复杂。这就要求每个软件产品都要经历一个很繁重的测试周期。再加 上每个开源的软件都是各自按照自己的进度和成熟度进行升级,导致引用他们的软件无法 升级的发展,甚至在有些开源软件升级后对引用系统带来的是灾难性的变化,这更进一步 说明现如今软件成本如此之高的原因。 开源的繁荣虽然给各个领域都造就了许多优秀的框架,如s p r i n g ,s t r u t s ,h i b e r n a t e , w e b w o r k 等等,但却没有出现一个一站式、统管全局的整合开发框架。每个框架都拥有自 己的配置文件,框架的整合经常带来配置的灾难。相互搭配的框架和框架之间经常会出现 相似的或重复的功能,如何取舍,如何使用往往让开发者们为难。在这种情况下,插件体 系结构应运而生。 模块化设计方法将软件功能分解,降低各模块之间的耦合性。假如某个模块需要更新, 就不必改变整个架构,只需修改相应的模块,工作量就会明显减少。动态部署和可插拔的 业务需求也要求软件按照模块化的思想将相应的业务划分为独立的模块。 o s g i 虽然能在一定程度上解决模块化问题,但o s g i 是针对单一虚拟机设计的,不能 应用于分布式环境下。同时,传统的w e b 框架虽然能够应用于分布式,但往往缺乏较好的 模块化模型。因此,有必要设计一个可应用于分布式环境下的插件体系结构的模块化框架 来解决此类问题,为更方便的实现敏捷开发,应能够将流行的j a v a 开源框架集成其中。 1 2 立题目的和意义 随着软件体系结构的定义在不断完善,软件体系结构的模式也由面向过程的体系结构、 面向对象的体系结构发展至面向服务的体系结构( s e r v i c e o r i e n t e da r c h i t e c t u r e , s o a ) 【8 】,这标志着软件开发迈进了一个新的里程碑。s o a 既是一种软件架构,也是一种编 程模式,还是一种思考部署软件的方法。模块化开发过程的标准化、部署、查找、调用( 绑 定) 以及相关的实现技术成为现阶段实施s o a 思想的关键。面对快速多变的商业需求,在 构建s o a 应用系统过程中,人们开始关注模块化开发过程的标准化、运行时刻服务管理、 服务版本升级、高效服务查找、服务扩展方式等具体实现问题,现有的面向服务架构实施 方案存在如下待研究的问题: 2 浙江理工大学硕士学位论文 1 规范的模块化开发有利于大型项目有效分解以及项目的动态发布,大大缩短了开发 周期和资源成本。为了解决模块化开发过程的规范性,o p e n j o k 组织给出j s r 2 7 7 ( j a v a m o d u l es y s t e m ) 【9 】的参考建议,但是该规范未被业界广泛接受,因此模块化开发过程的标 准化已经成为构建s o a 应用系统的迫切需要。 2 系统运行时刻对于服务动态管理的要求越来越高,例如在不需要重启系统的前提下, 是否支持添加新服务、更新已有服务、删除过期服务、修改服务配置、服务行为动态改变 等成为现有s o a 实现技术的瓶颈。 3 如何在服务请求时刻获取最新目标服务元数据,以便实现服务间的动态依赖绑定也 是s o a 需要解决的问题。 4 随着业务需求的不断演进,通过预设服务扩展点来扩充系统功能的方式成为衡量面 向服务架构扩展性的指标之一。 在s o a 应用系统构建过程中,系统供应商和系统运营商最为关心的核心问题是服务的 动态部署、服务查找、需求变更的适应性以及系统的可扩展性,而o s g i ( o p e ns e r v i c e g a t e w a yi n i t i a t i v e ) r 4 规范【l o 】所具有的服务生命周期管理、服务动态部署、模块化的开 发标准化等卓越之处恰恰是s o a 所需要但未涉及的。o s g ir 4 规范最初出发点是为了移动 设备的计算环境,由于移动设备所提供的智能服务总是以插件的形式存在,因此更多的考 虑了模块标准化开发、运行时环境管理和服务的动态管理等问题。基于o s g i 的模块化开 发思想恰恰能为模块化开发过程的标准化提供规范性的参考,o s g ir 4 规范可以有效解决 在s o a 架构下的服务动态部署、服务动态依赖绑定、运行时刻服务更新、预设服务扩展点 等问题,使它在构建s o a 应用方面具有重大优势,可以像e c l i p s e 平台为软件工具所做的 那样,为企业的i t 系统创造一个良性的服务生态环境。 充分利用o s g i 服务生命周期、服务动态部署、模块化开发等特性,有效改善s o a 服务 生态环境已经引起国际上知名高校和科研机构的关注,同时众多开源组织s p r i n g 、 s t r u t s 2 、n e w t o n 积极推动o s g i 在企业应用软件的实施探索,但现阶段相关的研究成果还 不够成熟,因此我们所做的研究可以紧跟国际前沿水平,在s o a 的服务部署、服务动态管 理、模块化开发标准化等领域作一些大胆的尝试。另一方面,o s g i 技术也具有很好的应用 前景,较有影响的应用案例包括b m w 汽车应用控制系统、i d e p r o j e c te c l i p s e 等。而面向 服务的应用系统与o s g i 规范相互融合的关键技术尚未成熟,目前尚没有较有影响的应用 案例,可以预见的应用场景非常广泛包括各类电子商务系统、企业运营支撑系统、企业服 务集成平台等。 3 浙江理工大学硕士学位论文 本课题旨在解决分布式企业应用的模块化问题,设计了一个采用s o a 思想的可动态部 署服务、管理服务的框架,同时能够集成j a v a 开源框架以实现敏捷开发。具有广阔的应 用前景。 1 3 国内外现状研究 目前国内外对插件体系结构的研究重视程度不够,处于探索阶段。至今著名的o s g i 典 型的应用案例主要有两个,分别是e c l i p s e 和b m w 汽车的应用控制系统。 e c li p s e 的插件体系结构和o s g i 的思想非常相似,都强调微核+ 系统插件+ 应用插件的 概念,e c l i p s e 之所以要抛弃原有的比较成熟的插件体系结构而转而采用o s g i ,就是因为 o s g i 的规范性以及o s g i 对于插件体系结构更为完整的定义。e c li p s e 采用o s g i 作为其插 件体系结构的成功是很明显的,在e c l i p s e3 1 版本以后可以明显的感觉到启动速度的提 升,同时也使得可以在运行时对插件进行管理,更明显的提升是插件的开发更加的规范, 从而可以使用很多已有的o s g i 插件。e c l i p s e 同时也带给了业界良好的插件系统的体验以 及插件系统的开发经验。 b m w 汽车的应用控制系统采用o s g i 作为其底层架构,这一定程度上颠覆了很多人对于 j a v a 的认识,很多人都认为基于j a v a 的系统低效,不可能用于汽车这样的应用控制系统 上。在e c l i p s e c o n2 0 0 6 会议上b m w 采用o s g i 得到了证实。这套系统主要用来控制汽车 上的音箱、灯光等等设备,总共由1 0 0 0 多个b u n d l e 构成,但b m w 汽车的应用控制系统启 动时间却只需要3 5 秒,这也从很大程度上反应了采用o s g i 的系统的效率并不会低。 目前国内针对s o a 的研究,主要体现在部分中间件产品上,而基于s o a 的 e s b ( e n t e r p r i s es e r v i c eb u s 企业服务总线) 整体解决方案非常缺乏,更多的是一些中间 件产品和协同软件产品,并且已经推出了一些与s o a 密切相关的软件产品。到目前为止, s o a 并没有形成统一的规范,各大厂商对s o a 的实现也不尽相同。s c a ( s e r v i c ec o m p o n e n t a r c h i t e c t u r e ) 是被很多厂商推荐的标准,作为不同平台不同语言解决组装问题的更广泛 的方法,但是s c a 还没有推出标准系统的规范。目前s u n 和t i b c os o f t w a r e 公司支持j b i , 而b e a 、i b m 、o n a 、o r a c l e 、s a p 、s i e b e ls y s t e m s 和s y b a s e 公司支持s c a s d o 。国内企 业用户目前对s o a 的价值还没有清晰的认知,这些基于s o a 的系统平台有些共同的特性, 都是基于原有的一些中间件产品,在外围增加一些w e b 服务包装器,再把一些消息处理机 制整合到原有的系统中,实现了面向服务的模块开发的松散耦合,但是这些都离基于s o a 模型设计的企业级系统解决方案有一定距离。为此,如何设计一个支持服务动态部署、服 4 浙江理工人学硕士学位论文 务生命周期管理、模块化的开发过程标准化等问题都是s o a 模型应用平台的关键之处,同 时也是本文的研究重点。 1 4 课题主要研究内容 本文通过广泛查阅相关文献资料,使用o s g i 改变j a v a 类装载器装载策略,将o s g ir 4 参考实现之一e q u i n o x “1 技术应用于w e b 开发,实现j a v aw e b 应用的模块化。在这种方式 下,每个模块都是一个b u n d l e 。能有效避免版本冲突,兼容多版本,支持动态部署和动态 更新。并研究如何将o s g i 框架与流行的j a v ae e 框架集成,以便敏捷开发企业应用。最 后在借鉴s o a 原始模型的基础上,提出基于o s g i 的模块化框架模型,并且通过一个简单 的虚拟天文台系统来验证该模型的即插即用扩展性、服务模块化管理以及服务组件的动态 部署优势。论文的主要工作包括: 1 研究j a v a 的模块化和类装载机制,研究o s g i 技术对模块化的支持,深入o s g i 的 b u n d l e ,框架和服务。研究s o a 与w e bs e r v i c e 技术。 2 提出基于o s g i 的模块化框架模型。该框架模型充分结合o s g i 与s o a 的优势,充分 体现了o s g i 在动态加载服务上的优越性。并且将o s g i 与w e b w o r k ,h i b e r n a t e ,s p r i n g 等开源框架整合,能够更加方便的对系统进行维护。 3 设计了一个能够随时进行加载和卸载的企业应用系统,并使用我们的框架模型实现。 1 5 论文的组织结构 第一章绪论。主要阐述研究背景和意义、国内外研究现状、研究内容以及论文组织。 第二章o s g i 架构研究。首先对j a v a 的模块化和类装载机制进行阐述,然后深入o s g i 技术,对o s g i 系统的设计目标和原则进行了阐述。 第三章面向服务架构。简单介绍了企业应用集成的传统实现方式以及优缺点,着重分 析了s o a 的定义和基本特征,并且总结了基于w e bs e r v i c e 的s o a 在实施过程中面临的问 题,提出了将s o a 与o s g i 优劣互补的实施建议。给出了模型的总体结构。 第四章系统架构设计。结合s o a 原始模型、o s g i 微内核e q u i n o x 、w e bs e r v i c e s 、内 存数据库、x m l 等技术,设计模块化框架模型。并对该框架中的应用层、b u n d l ec o n t e x t c a c h e 、服务插件管理中心、扩展性进行了讨论。着重设计和实现了w e b 服务器与s e r v l e t 容器嵌入e q u i n o x 的解决方案、服务插件的调用方式、o s g i 服务封装方法,并参考e c li p s e 的e x t e n s i o nr e g i s t r y 技术给出了框架的扩展设计。 5 浙江理工大学硕士学位论文 第五章详细设计与实现。本章主要进行虚拟天文台系统的设计。首先在系统功能需求 的基础上,细化流程中各组件的实现。然后介绍了系统框架的搭建细节,并详细说明了系 统与相关开源框架的整合。最后介绍了系统通过w e bs e r v i c e 的发布步骤。 第六章总结与展望。对本文的主要工作进行了总结并对下一步工作进行了说明。包括 在开发过程中对工程进行的优化,并对o s g i 技术的发展做了展望。 6 浙江理工人学硕士学位论文 第二章o s g i 架构研究 模块化就是将系统拆成几个模块【1 2 1 。每个模块独立于其它模块运行,但又可以与其它 模块在一定条件下组合起来完成某些任务。正如前面引用所说,系统模块化的主要动机是 降低复杂性,更好地控制各要素之问的交互。模块体现了软件组件高内聚和低耦合的特性。 这一章中,我们研究j a v a 语言内建的模块化支持。 2 1j a v a 的模块化支持 j a v a 对模块化的支持主要体现在以下三个方面:j a v aa r c h i v e ( j a r ) 文件、包 ( p a c k a g e s ) 和命名空间( n a m e s p a c e ) 。 2 1 1j a r 文件 j a r 文件与z i p 压缩文件没什么不同,只不过多了个“m e t a - i n f ”文件夹,用来存放 一些运行时所需要用到的额外信息【1 3 】。j a r 格式最初是用来将j a v a 类文件和资源文件打包 成单独的一个文件以简化部署。这种格式后来被j a v ae e 家族采用,作为w e ba r c h i v e s ( w a r ) ,e n t e r p r i s ea r c h i v e s ( e a r ) 和r e s o u r c ea d a p t e ra r c h i v e s ( r a r ) 的规范。 “m e t a i n f ”文件夹可以存放任意文件,最重要的是存放m a n i f e s t m f 清单文件,或 者仅仅包含清单文件。清单文件典型地包含有对j a r 文件内容的描述信息。 以下是一个清单文件的内容,取自a p a c h et o m c a t5 5 容器的s e r v l e t2 4a p i 。 表2 1 :m a n i f e s t i i f 举例 m a n i f e s t v e r s i o n :1 0 a n t v e r s i o n :a p a c h ea n t1 6 5 c r e a t e d b y :1 4 2 1l b 0 6 ( s u nm i c r o s y s t e m si n c ) n a m e : j a v a x s e r v l e t s p e c i f i c a t i o n t i t l e :j a v aa p if o rs e r v l e t s s p e c i f i c a t i o n v e r s i o n :2 4 s p e c i f i c a t i o n v e n d o r :s u nm i c r o s y s t e m s ,i n c i m p l e m e n t a t i o n t i t l e :j a v a x s e r v l e t i m p l e m e n t a t i o n v e r s i o n :2 4 p u b l i cd r a f t i m p l e m e n t a t i o n v e n d o r :a p a c h es o f t w a r ef o u n d a t i o n 清单格式结构中,上半部分为“主要 部分,随后是一个空行,接着是各自的“指定 7 浙江理工大学硕士学位论文 部分,也以空行分隔。每个“n a m e :v a l u e 对所涉及的属性行用来为运行时系统提供信息。 在我们的例子中,“主要 部分提供了清单版本和一些b u i l d 信息,唯一的“指定”部分 提供了描述“j a v a x s e r v l e t ”的信息。 j a r 文件可以直接装载并在运行时环境( j r e ) 下运行。如果以这种方式使用,提供运行 信息和到其它库文件链接信息的两个属性m a i n c l a s s 和c l a s s p a t h 将起作用【1 4 1 。 m a i n - c l a s s 属性值为应装载和运行的主应用程序的类名。程序运行时,j r e 将执行初始化, 装载类并调用类的“m a i n 方法,同时传递参数并执行类。c l a s s p a t h 对模块中定义的上 下文更感兴趣,因为它要表述该j a r 文件要依赖其它哪些库文件。该属性提供到其它j a r 文件的相对路径列表,在那些路径下可以找到我们所需要的类。也许这种方法的最大缺点 便是表达依赖的脆弱性,因为是用整个路径而不是用实际需要的j a r 文件中某些类和某些 资源来表达依赖。此外,c l a s s - p a t h 属性只在库文件集创建时定义,之后运行时期的修改 不容易控制。 j a r 文件格式和清单文件提供了一种装配除m e t a 信息外的j a v a 资源集的有效机制。 2 1 2 包( p a c k a g e s ) 和命名空问( n a m e s p a c e ) 当我们用j a v a 创建一个类或接口时,文件第一行也许就是包声明。如: p a c k a g eo r g e c l i p s e e q u i n o x h t t p s e r v l e t b r i d g e : 包对j a v a 模块化起着重要作用,因为它支持j a v a 命名空间,可以在一定程度上防止 命名冲突。习惯上使用i n t e r n e t 域名相反的结构来定义包。通过这种方式,除非命名冲 突来自开发机构本身,否则是可以避免的。 包的第二个作用是信息隐藏。允许同一个包中的类或接口的非私有属性和方法。这使 得一组相关函数可以共享内部a p i ,而不必将这些实现细节暴露在包外。 包的访问支持很简单,尽管当包中有大量特权类时存在访问效率不高的问题,但在很 多情况下还是好用的。将包细分为子包会暴露内部a p i ,因为现在不支持包与包之间的特 权访问。 2 1 3j a v a 虚拟机( j v m ) 的类装载机制 j v m 简介 为了实现代码共享和基于服务的应用协作,必要考虑j v m 在类装载机制上的实现原理 【1 5 】。一般来说,我们开发一个j a v a 应用程序的过程如下: 8 浙江理工大学硕士学位论文 1 用文本编辑器或者专有的集成应用开发工具( i d e ) 编辑j a v a 源代码,一个或多个 j a v a 文件。 2 用j a v a 编译器编译j a v a 源代码文件,从而得到具有平台独立性的c l a s s 文件,即 所谓的b y t ec o d e 。 3 在完成了上述两步后,在代码运行的环境中,这些c l a s s 代码可以通过网络传送或 着直接从本地存储区被装载到j a v a 虚拟机中。 4 j w 将我们所编写的j a v a 代码与j a v aa p i 的c l a s s 文件相结合,从而使得与平台 无关的代码在具体的执行环境中运行。 在j a v a 网络架构中,j w 居于核心地位。正是因为j w 的特点,使得j a v a 程序能够 实现三大目标:平台独立性、安全性、网络移动性。j w 相当于一台抽象的电脑。j 规范 严格规定了每一个j w 都必须实现的功能。但是这个规范给了j w 设计者以相当大的灵活 性去具体实现其中所规定的功能u 6 1 。j v m 规范的这种灵活性使得它可以在广泛的电脑与其 他设备上都可以实现。 j v m 的主要工作是装载c l a s s 文件,并执行其中所包含的b y t ec o d e 代码。如图2 1 所示,j w 中有一个类装载器( c l a s sl o a d e r ) ,类装载器负责将用户程序以及j a v aa p i 中 的c l a s s 文件装载到j v m 中。其中类装载器并不会把所有的j a v aa p i 文件都装载进来, 相反,它只装载被用户程序使用的那部分j a v aa p i 类文件。 图2 1j v m 功能部件 在c l a s s 文件被装入j v m 后,这样b y t e c o d e 将通过包含在j v m 中的执行引擎 ( e x e c u t i o ne n g i n e ) 而得到执行。不同的j v m 有不同的执行引擎实现。在全部由软件实现 9 浙江理t 大学硕士学位论文 的j 中,最简单的执行引擎通过解释b y t ec o d e 来执行程序。有些设备的执行j a v ab y t e c o d e 的执行引擎是嵌入在硬件设备的,这样的j v m 相对占有的存储空间比较小。 j v m 的类装载机制 通过对执行引擎j v m 的介绍,我们理解了j a v a 语言是如何做到平台独立性的。在j v m 中还有一个对安全性和网络移动性有很大影响的方面是类装载架构。事实上,图2 - 1 中的 类装载器是一个类装载器子系统。j 有一套非常灵活的类装载架构,允许j a v a 应用程序 以客户化的方式来装载j a v a 类文件。j a v a 程序可以使用两种类型的类装载器:一种是基本 型类装载器,另一种是类装载器对象。基本型的类装载器属于j v m 实现的一部分,在一个 删中只有唯一的基本型类装载器。例如,如果一个j v m 是在操作系统的基础上由c 程序 实现的,那么基本型的类装载器将是这个c 程序的一部分,基本型的类装载器通常从本地 装载可信任的j a v a 类文件。在运行时,一个j a v a 应用程序可以安装类装载器对象,用它 来实现定制的装载方式【1 7 】。 因为有类装载器对象的存在,我们在编译的时候不必知道最终会有哪些类会参与到 j a v a 应用程序的运行过程中来。同时,类装载器对象也使我们能够在运行时动态的扩展 j a v a 应用程序。每一个j a v a 类被装载的时候,j v m 都要记录是由哪一个类装载器装载的: 是基本型的类装载器还是某一个特殊的类装载器对象。如果被转载的类第一次引用别的 j a v a 类,j w 会试图用当前的类装载器去装载被引用的类。因为j v m 采用上溯的机制来装 载类对象,缺省情况下j a v a 类只能看到由同一个类装载器装载的哪些j a v a 类。这就使得 在同一个j a v a 应用程序中可以创建多个命名空间。在运行着的j a v a 应用程序中,每一个 类装载器维护着一个它自己的命名空间,而这个命名空间的内容是由所有由该类装载器装 载的j a v a 类的类名称组成的。即每一个类装载器维护了一个由其装载的类的名称组成的 命名空间。因此可以通过将不同源程序装载到不同的命名空间来分隔这些j a v a 类,实现 模块化的目的。o s g i 正是基于j v m 类装载器形成模块隔离类装载器的机制,同时也增强 了类装载器按版本加载、属性过滤等多种功能。 2 20 s g i 技术概述 开放服务网关组织( o p e ns e r v i c eg a t e w a yi n i t i a t i v e ) ,简称o s g i 。o s g i 联盟【1 8 , 1 9 】 始建于1 9 9 9 年3 月,是一个非赢利机构,旨在创建一个管理本地网络设备服务的公开规 范。o s g i 规范为网络服务定义了一个面向对象、基于组件的计算环境。在o s g i 系统中组 件和服务有自己的生命周期,可以动态安装和卸载。 i o 浙江理工大学硕士学位论文 当网络设备添加o s g i 服务平台功能后,就能够在任何位置控制这个网络设备上的软件 组件的生命周期。网络设备上的软件组件可以被任意的安装、更新或者删除而不影响该设 备的运行。这些组件是一些能够动态发现和使用其他组件的类库或者应用程序,这些组件 可以是商业组件通过购买获得,也可以是自行开发的。o s g i 联盟为许多通用的功能如h t t p 服务器、配置、日志、用户管理、x m l 等开发了标准的组件接口,同时也可以从不同的软 件供应商得到兼容的插入式组件的不同优化以后的实现刚。 o s g i 是一种中间件,它提供了一个a p i 标准,下层是通讯协议,上层是应用软件。其 目的在于辅助现有的标准,促进局域网络设备的连通性,以及使广域网络的服务存取及应 用更加广泛。o s g i 可以应用在各种网络存取协议上不论是高速或低速、有线或无线的网络 架构均可适用。而在应用程序方面,服务提供商可以开发与其它标准兼容的服务。o s g i 规 范
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肉牛短期育肥增重饲养管理方案
- 亚健康人群问诊话术操作手册
- 温经络熏蒸理疗实施操作指引
- 草莓商品果采摘分级操作标准
- 奶牛夏季防暑降温乳房保健规程
- 现代拖拉机田间驾驶标准化安全操作指南
- 辣椒水肥一体化操作实施方案
- 生猪标准化规模养殖防疫规程
- 苹果树夏季修剪管理技术规范
- 农作物种子包衣技术实施方案
- GB/T 3033-2025船舶与海上技术管路系统内含物的识别颜色
- 103 人工智能在教育领域的发展趋势与教师准备
- 精神分裂症测试题
- 江苏省无锡市2025年中考地理真题试卷附真题答案
- 生产管理晋升转正述职
- 疝气病人出院宣教
- 2025年南通纳米碳酸钙项目可行性研究报告
- 老年黄斑变性进展护理
- 第15课《水果的时间魔法-自制水果酵素》(课件)-三年级下册劳动种植自制校本
- 云车高空作业车施工方案
- 湖南学考高一试卷及答案
评论
0/150
提交评论