一种基于代理的异构服务调用方法与协同调用系统的制作方法

文档序号:9931394阅读:420来源:国知局
一种基于代理的异构服务调用方法与协同调用系统的制作方法
【技术领域】
[0001]本发明涉及了软件服务与构件技术领域,主要涉及一种基于代理的异构服务调用方法与协同管理系统。
【背景技术】
[0002]随着计算机技术研究的逐步深入,大批优秀的软件技术在日常工作中扮演了重要角色。目前,基于0SGi(0pen Service Gateway Initiative,开放服务网关协议)JORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构^PWebService等技术所构建的异构服务已广泛应用于各行业中。
[0003]软件行业的工业化趋势使得基于构件的软件复用思想,成为最近几年软件工程领域研究的热点之一。模块化设计可以提高软件的复用度和质量,缩短软件开发周期,基于CORBA和Web Service等技术构建的服务组件应用广泛,其中,CORBA采用IDL(Interfacedescript1n language,接口描述语言)以及中间件技术,提供不依赖于平台的编程接口和模型;Web Service米用独立于平台的S0AP(Simple Object Access Protocol,简单对象访问协议)协议通信,利用WSDL(Web Services Descript1n Language,网络服务描述语言)语言统一描述服务,实现网络间服务的模块化。
[0004]按照模块化设计的思想,异构服务组件应当能够集成在一起提供更加完善的功能,但它们是由不同服务提供者、不同平台、不同系统所提供的,即服务及接口的异构性,导致了异构服务组件集成复用的困难。因此,在构建大型分布式系统时,如何有效地兼容这些历史遗留的异构服务,提高软件复用度,减少开发成本,缩短开发周期,成为一个重要的问题。
[0005]目前,异构系统的集成研究主要是基于SOA思想,利用Web服务技术或ESB总线技术实现,或者利用与环境无关的SOAP通信协议实现,来解决异构系统的互操作问题。虽然这些集成方法可以解决异构服务的复用问题,但是缺少对服务元数据的描述,给用户调用服务带来了不便,而且只能对服务进行注册、调用等操作,不能对服务的生命周期进行更详尽的管理。
[0006]本发明提出了一种基于代理的异构服务调用方法与协同管理系统,它采用基于“JVM中的S0A”一一OSGi框架来管理服务组件,实现服务“即插即用,即删即无”的效果。运行于OSGi容器内的模块单元称之为Bundle,它由Java Jar文件与额外的元数据文件(MANIFEST.MF)描述组成。本发明通过代理的思想,将分布式的异构服务对象封装到OSGiBundle中,有效地屏蔽了异构服务不同平台、不同实现语言、不同接口等差异性,让服务使用者可以透明的访问远程异构服务;同时,为了方便用户调用异构服务,本发明采用具有简单、高效、低成本等优点的LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)来描述服务的元数据。为了增加系统的稳定性,本发明还制定了一套服务质量评估和服务容错方案,一旦出现运行出错的服务,系统将自动启动备用的服务组件,将有效地保证系统健壮、平稳运行。

【发明内容】

[0007]本发明主要应用于异构服务的集成管理,增强历史遗留系统与异构服务的可复用性,提高异构服务之间的互操作能力与利用效率。为了实现上述功能,本发明提出了一种基于代理的异构服务调用方法与协同管理系统。
[0008]所述的异构服务,是指由不同服务提供者、不同开发语言、不同平台、不同操作系统所提供的服务。本发明所涉及的系统主要针对C0RBA、Web Service、0SGi等3种异构服务。
[0009]一种基于代理的异构服务调用方法,其特征在于,包括如下步骤:
[0010]步骤1、通过cmd本地编译命令,结合注册时所提供的服务信息,自动编译生成该服务对应的多个本地Java文件;其中,对于CORBA服务,需要提供该服务的IDL文件,利用idl j命令,自动生成该服务对应的接口文件、实现类文件以及CORBA远程通信文件;对于WebService,需要提供该服务的WSDL,利用wsimport命令,自动生成该服务对应的接□文件、实现类文件以及Web Service远程通信文件;
[0011 ]步骤2、搜索编译后的本地Java文件,获取服务接口文件;其中,对于CORBA服务,循环查找步骤I生成的本地文件中以Operat1ns.java结尾的文件;对于Web Service,解析WSDL获得portType节点的name属性,该属性值即为接口名,查找步骤I生成的本地文件中以该接口名命名的.java文件;
[0012]步骤3、对步骤I中生成的实现类文件进行代码封装,生成一个新的接口实现类文件,该实现类服务于步骤4中的服务注册;该类实现了步骤2所查找的接口类,并定义了一个远程服务的本地代理对象,该对象为一个静态初始化的变量,类中所有的接口实现方法均通过调用该对象的同名方法实现;
[0013]步骤4、根据接口和接口实现类文件动态生成该服务的BundleActivator类文件,该类实现了 OSGi定义的BundleActivator接口的start方法和stop方法,在start方法中注册远程服务,在stop方法中销毁OSGi框架的Bundle上下文对象;
[OOM] 步骤5、根据步骤4所生成的BundleActivator类文件以及其它系统环境,生成包含Bundle-Vers1n、Bundle_Activator、BundIe-RequiredExecut1nEnvironment、Import-Package等元数据信息的MANIFEST.MF文件;
[0015]步骤6、通过Ant打包文件工具将步骤I至5所生成的所有文件,统一编译打包生成本地代理Bundle。
[0016]一种异构服务协同管理系统,其特征包括:
[0017]组件一 Java虚拟机:
[0018]组件二,OSGi容器组件:系统核心功能运行所依赖的OSGiFelix框架,以及该框架下的核心业务模块:OSGi服务管理模块与OSGi服务容错模块,其中,
[0019]OSGi服务管理模块用于对注册到系统中的OSGi服务以及⑶RBA服务与WebService的代理Bundle进行统一的生命周期管理与协同调用支持,包含服务代理生成子模块、服务调用子模块、服务生命周期管理子模块与服务质量评价子模块;
[0020]服务代理生成子模块:为CORBA服务与Web Service等异构服务资源生成本地代理Bundle;
[0021]服务调用子模块:用于实现通过系统中的本地Bundle对系统异构服务池中的异构服务进行统一调用;
[0022]服务生命周期管理子模块:用于管理系统OSGi框架下的所有Bundle的生命周期,包括OSGi服务自身的Bundle以及系统为CORBA服务和Web Service自动生成的代理Bundle;该模块继承了OSGi框架对Bundle生命周期管理的相关接口,实现对系统内Bundle的安装、解析、启动,停止,更新,卸载等操作的统一管理;
[0023]服务评价子模块:利用服务的响应时间、执行时间、执行成功率等运行数据对异构服务进行质量评价,可以根据经验或者用户兴趣进行各项指标评分,然后通过用户要求赋予各项指标权重,进行服务质量加权综合评价,从而帮助用户了解系统中各服务的质量,并为出错服务的自动恢复提供依据;
[0024]OSGi服务容错模块主要用于监听服务的运行状态并自动恢复出错服务,从而提高系统的鲁棒性,包括了服务运行监测子模块与服务容错恢复子模块,其中,
[0025]
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1