CN101609415B - 基于中间件的通用服务调用系统及方法 - Google Patents
基于中间件的通用服务调用系统及方法 Download PDFInfo
- Publication number
- CN101609415B CN101609415B CN2009100632049A CN200910063204A CN101609415B CN 101609415 B CN101609415 B CN 101609415B CN 2009100632049 A CN2009100632049 A CN 2009100632049A CN 200910063204 A CN200910063204 A CN 200910063204A CN 101609415 B CN101609415 B CN 101609415B
- Authority
- CN
- China
- Prior art keywords
- service
- information
- module
- middleware
- wsdl
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及服务调用技术领域,尤其涉及一种基于中间件的通用服务调用系统及方法。本发明包括WSDL解析模块,用于根据WSDL文档实现其所含服务信息到按中间件存储模式存储的自动转换;中间件存储模块,将所述WSDL解析模块输入的服务信息采用中间件存储模式持久存储;服务调用模块,用于对存储在所述中间件存储模块的服务信息进行服务调用;服务索引模块,对所述中间件存储模块的服务信息构建索引;服务查询接口模块,用于提供服务检索接口,根据服务检索接口接受的查询请求信息检索所述中间件存储模块中的相应服务信息,然后进入通用服务调用模块对服务进行调用。本发明具备在服务检索系统或服务搜索引擎领域,提高了服务支持的水平的特点。
Description
技术领域
本发明涉及服务调用技术领域,尤其涉及一种基于中间件的通用服务调用系统及方法。
背景技术
在服务搜索引擎或者服务检索系统中,如果对每个服务构建一个调用客户端,将导致服务调用客户端的数目非常大,换句话说,如果每个服务都需要一个代码模块才能实现调用,那么系统的代码量和模块数都将非常庞大且不易于维护和使用;同时,服务的调用代码都需要对系统进行编译配置,对服务动态增长的系统而言,多次对其进行配置是很不方便的。因此,目前在服务搜索引擎或者服务检索系统中,系统运行端适于使用通用的服务调用程序。
IBM公司提供了不带有直接代码生成功能的新服务调用环境WSIF(Web ServicesInvocation Framework),其主要的特点是面向抽象服务编程,而不是面向SOAP:允许无存根调用访问Web服务所需的所有信息,服务的抽象接口、绑定等信息通过WSDL获得;WSIF使用WSDL获得服务描述信息,直接“告诉”系统WSDL所处的地址,所使用的操作并对相对应的参数赋值即可对服务进行调用。
然而,WSIF应用框架直接使用WSDL文档,对WSDL文档带有依赖性,调用代码的编写方式类似于WSDL2Java,其适合于编写对单个服务进行调用的代码而不用于应用程序集成;在获得服务调用数据时,需要获得WSDL文档并对其进行解析,这样加剧了系统负荷降低了调用速度。在WSDL中,一个Operation有一个Input message以及一个可选的Output message或fault message。而在WSIF中,可看到一个类似的层次结构,WSDL与WSIF有比较密切的关系,参见下表的对应关系:
WSDL | WSIF |
(WSIL/UDDI) | WSIF Service Factory或JNDI |
Service | WSIF Service |
Port | WSIF Port |
Binding | (无相应的实体) |
Operation | WSIF Operation |
Message | WSIF Message |
Part | (无相应的实体) |
发明内容
本发明的目的是提供一种基于中间件的通用服务调用系统及方法,以适应服务检索系统或服务搜索引擎,提高服务水平。
为达到上述目的,本发明采用如下的技术方案:
WSDL解析模块,用于根据WSDL文档实现其所含服务信息到按中间件存储模式存储的自动转换;
中间件存储模块,将所述WSDL解析模块输入的服务信息采用中间件存储模式持久存储;
服务调用模块,用于对存储在所述中间件存储模块的服务信息进行服务调用;
服务索引模块,对所述中间件存储模块的服务信息构建索引;
服务查询接口模块,用于提供服务检索接口,根据服务检索接口接受的查询请求信息检索所述中间件存储模块中的相应服务信息,然后进入通用服务调用模块对服务进行调用。
所述中间件存储模块包括服务表、操作表和参数表,将服务信息内容分解为服务元素、操作元素、参数元素分别存储在服务表、操作表和参数表中。
所述服务调用模块采用Axis2平台构建。
基于中间件的通用服务调用方法,包括以下步骤:
WSDL解析步骤,用于根据WSDL文档实现其所含服务信息进行解析后转存入一个更加简介的模式中;
服务调用步骤,基于转存的服务信息进行服务调用。
所述WSDL解析步骤包括以下子步骤:
①读取WSDL文档的根元素,构建一个Definition对象;
②使用Definition的子元素Types生成标准的Java对象Schema向量;
③获得在WSDL文档中定义的所有Service对象,提取每个Service对象的服务元素信息填入服务表;提取每个Service对象的端口集合得到相应绑定信息,从绑定信息中取得每个端口的操作集合和操作的地址信息,作为操作元素信息填入操作表;再对每个操作进行处理,得到每个操作相关的参数信息并填入参数表。
本发明具有以下优点和积极效果:
1)在服务检索系统或服务搜索引擎领域,提高了服务支持的水平。
2)实现了中间件存储模式下的通用的调用服务。
附图说明
图1是本发明基于中间件的通用服务调用系统的模块结构图。
图2是本发明基于中间件的通用服务调用系统的存储模块的存储模式示意图。
其中,
11-WSDL解析模块、12-中间件存储模块、13-服务调用模块、14-服务索引模块、15-服务查询接口模块、21-服务表、22-操作表、23-参数表。
具体实施方式
下面以具体实施例结合附图对本发明作进一步说明:
本发明提供的基于中间件的通用服务调用系统,具体采用如下的技术方案,参见图1,该基于中间件的通用服务调用系统包括WSDL解析模块11、中间件存储模块12、服务调用模块13、服务索引模块14、服务查询接口模块15;WSDL解析模块11,用于根据WSDL文档实现其所含服务信息到按中间件存储模式存储的自动转换;中间件存储模块12,将来自WSDL解析模块11输入的服务信息采用中间件存储模式持久存储;服务调用模块13,用于对存储在中间件存储模块12的服务信息进行服务调用;服务索引模块14,对中间件存储模块12的服务信息构建索引;服务查询接口模块15,用于提供服务检索接口,根据服务检索接口接受的查询请求信息检索中间件存储模块12中的相应服务信息,然后进入通用服务调用模块对服务进行调用。
下面进一步对本发明的基于中间件的通用服务调用系统的各个模块进行详细描述:
用于存储持久服务信息的存储模块,可以采用多种方式实现存储,如内存中的对象或物理文件,也可以使用数据库与XML;服务信息内容也可以用多种结构被存储管理,例如直接用目前本领域常用的WSDL文档。而本发明为了提高响应查询请求信息的速度,保障检索结果准确性,具体实施方式采用了中间件存储模式存储服务信息,即将服务信息内容分解为一项以上元素后分项存储。按照中间件存储模式存储服务信息,条理化结构化地存储管理服务信息所含内容,既便于支持服务检索接口的高级查询,还能快速响应查询请求信息,也便于在服务检索接口清晰地展示检索结果。更重要的是,中间件存储模式的目标是能够支持不同的应用,服务发现模块和服务调用代码生成模块都能方便地从存储模块调用服务信息。在以分布式数据库技术实现存储模块时,中间件存储模式具有支持分布式计算,提供跨网络、硬件和OS平台的交互优势,支持实现大规模的服务使用资源共享。
图2所示为本发明基于中间件的通用服务调用系统的存储模块的存储模式示意图,本实施例在存储模块中建立服务表21、操作表22和参数表23,将服务信息内容分解为3项元素,即服务元素、操作元素和参数元素后,然后分别存储到服务表、操作表和参数表,中间件存储模式将服务定义为包括多个属性的元组,这些属性可以包括服务调用所需要的信息、服务语义信息、服务属性的其他语言表示信息、用户自定义属性、服务包含的操作集合,附图2中的服务表21记载的服务信息包括服务名称、命名空间等,操作定义为操作各属性元组,以及所含有的输入输出参数集合;操作表22记载的操作信息包括操作的操作名称、SoapAction操作、绑定协议、传输方式、端口地址、服务ID等;参数定义为参数各属性元组,参数表23记载的参数信息包括参数名称、参数类型、参数排列方式、所属参数ID、参数数据类型、是否复杂类型、操作ID等。具体实施时,可以选择其它元素划分方式,按照更多项元素类别存储服务信息内容。
中间件的存储模式可以视为WSDL在结构上的简化与结构化,其与WSDL模式的关系如下:第一,除去Definition元素,使用服务元素作为根元素,将命名空间信息存储于Service元素中;第二,除去Message元素,使用参数元素的参数类型标识参数属于操作的输入还是输出;第三,使用参数元素替代Part与DataType,使用的属性标识是否为复杂类型。使用嵌套引用的方法标识从属的父参数,以支持复杂数据类型;第四,将Port,Binding的信息合并存储操作元素中,即将服务的抽象与具体信息进行融合。某些情况下操作可能被多个端口支持,所以可能会出现少许数据冗余;第五,支持属性扩展,本模式中所有元素均可以进行属性扩展,比如语义信息,汉语标注信息均可以存储入中间件存储模式,这些信息可以支持系统生成更加丰富的代码。以上各英文标识为WSDL文档和java语言的标准用语,可以参见相关标准,本发明不予介绍。
WSDL4J技术构建与WSDL模式相对应的对象:
Definition-WSDL的根元素。
Operation-对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。
PortType-对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。
Binding-特定端口类型的具体协议和数据格式规范的绑定。
Port-定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点。
Service-相关服务访问点的集合。)建立这种机制后,本发明提出的服务客户端自动构建系统可以收录WSDL文档后自动转换存储,便于扩展服务使用支持范围。具体实施时,也可以建立更多样的转换机制,例如采用DOM技术将Xml文件转换为中间件存储模式的服务信息。
可以在存储模块中对已存储的服务信息建立服务索引,例如对中间件的各个元素的属性值与服务信息构建倒排索引。如果使用数据库存储服务信息信息,可以直接使用数据库的视图功能,将整个中间件存储模式建为一个视图,支持对视图进行检索。服务索引也可以不直接使用中间件信息进行构建,在索引文件中保存服务的编号即可将服务索引与服务相联,这使得本系统可以使用任何复杂的服务发现策略。
存储模块的具体实现可以由本领域技术人员运用现有数据库技术和java技术完成软件建设,本发明不予赘述。
本发明提供的基于中间件的通用服务调用系统使用Axis2平台,,Axis2由Axis 1.x处理程序模型提供支持,但它具有更强的灵活性并可扩展到新的体系结构,Axis2对象模型(Axis2 Object Model,AXIOM)是Axis2的基础,任何SOAP消息在Axis2中都表示为AXIOM。
一条SOAP消息只是一个XML文档,由一个强制性的SOAP Envelope组成,SOAPEnvelope有一个可选的SOAP Header和一个必须有的SOAP Body。其中各部分具体内容如下:①Envelope定义各个SOAP消息的余下部分会使用的namespaces;②Header是可选的元素,它携带认证、事务处理和支付的辅助信息;③Body是消息的主要有效载体。当SOAP被用于执行一个RPC调用时,Body包含一个单独元素,这个元素包含方法名、参数和Web服务的目标地址。元素的namespace等于目标地址,根名是方法名。
当SOAP客户机向SOAP服务器发送SOAP消息时,用HTTP协议传输。即为SOAP与HTTP绑定。一个SOAP请求实际上就是一个HTTP POST请求。SOAP也可以与SMTP等协议绑定。
服务调用主要包括两个步骤:将SOAPAddress,SOAPAction等信息用于构建HTTP报头,然后使用操作名与输入参数构建创建请求消息,每个输入参数作为一个AXIOM中的树结构的一个节点。
Web服务的调用原理,其实质为构建HTTP+XML的数据包并通过本地变量获得同样以XML为格式的返回数据。而通用的服务调用程序,即是通过服务的描述信息(已经解析入中间件),为HTTP包头赋值,动态生成调用数据的输入框,动态构建服务输入数据的XML文件,并接收其返回数据,其实现的伪代码如下:
Step1:
Initialize Middleware;//初始化中间件
Step2:
//为使用中间件的数据为HTTP头赋值
Initialize Package Address using Operation Url;
Initialize Action using Service Namespace+Operation Name;
Initialize Transport Type and etc;
//使用中间件中的参数数据为输入XML赋值
Create Parent XML Node using Root Input Parameter Name;
For Each Input Parameter in Operation do
If Parameter is a Simple Parameter//简单参数
Generate XML Node using Parameter Name;//使用参数名产生节点
Add XML Node to Parent Node;//将节点加入到跟节点下
Else
Generate XML node using Parameter Name;
For each Sub Parameter in Complex Parameter//复杂参数
Generate XML Node using Parameter Name;//产生子参数
Add XML Node to Parameter;//参数加入跟节点下
Get result XML and Restore it to Local;
基于中间件的服务通用调用系统可以与服务发现模块非常好的融合,服务发现模块用于构建服务索引并提供服务检索查询接口,根据服务检索接口接受的查询请求信息检索存储模块中的相应服务信息,展示检索结果并为检索到的相应服务信息建立检索结果索引;服务发现模块可以采用现有检索技术方便的实现,只需根据服务检索接口接受的查询请求信息检索存储模块中的相应服务信息即可。若存储模块建立了服务索引,使用服务索引文件对服务进行检索更加方便高效,用户可以使用中间件中各元素的所有属性进行查询。服务检索接口以列表的方式呈现服务信息,列表的每个元素呈现可视化的整个服务信息,用户可以很方便的看到服务是否满足需要。为了方便生成用户需要的服务调用代码,服务发现模块根据用户点选的列表项目建立检索结果索引,并传送到服务调用代码生成模块。检索结果索引包含用户点选的列表项目对应服务信息在存储模块中的地址,可以直接采用服务索引文件的相关内容。
本发明同时提供了一种基于中间件的通用服务调用方法,包括以下步骤:
WSDL解析步骤,用于根据WSDL文档实现其所含服务信息进行解析后转存入一个更加简介的模式中;
服务调用步骤,基于转存的服务信息进行服务调用。
在上述的基于中间件的通用服务调用方法中所述WSDL解析步骤,具体包括如下子步骤:
步骤一,读取WSDL文档的根元素,构建一个Definition对象;
步骤二,使用Definition的子元素Types生成标准的Java对象Schema向量;
步骤三,获得在WSDL文档中定义的所有Service对象,提取每个Service对象的服务元素信息填入服务表;提取每个Service对象的端口(PortType)集合得到相应绑定(Binding)信息,从绑定信息中取得每个端口的操作(Operation)集合和操作的地址信息,作为操作元素信息填入操作表;再对每个操作进行处理,得到每个操作相关的参数信息并填入参数表。
Claims (1)
1.一种基于中间件的通用服务调用方法,其特征在于,包括以下步骤:
WSDL解析步骤,用于根据WSDL文档实现其所含服务信息进行解析后转存入一个更加简洁的模式中;该步骤进一步包括:①读取WSDL文档的根元素,构建一个Definition对象;
②使用Definition的子元素Types生成标准的Java对象Schema向量;
③获得在WSDL文档中定义的所有Service对象,提取每个Service对象的服务元素信息填入服务表;提取每个Service对象的端口集合得到相应绑定信息,从绑定信息中取得每个端口的操作集合和操作的地址信息,作为操作元素信息填入操作表;再对每个操作进行处理,得到每个操作相关的参数信息并填入参数表;所述WSDL表示Web Service描述语言;
服务调用步骤,基于转存的服务信息进行服务调用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100632049A CN101609415B (zh) | 2009-07-17 | 2009-07-17 | 基于中间件的通用服务调用系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100632049A CN101609415B (zh) | 2009-07-17 | 2009-07-17 | 基于中间件的通用服务调用系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101609415A CN101609415A (zh) | 2009-12-23 |
CN101609415B true CN101609415B (zh) | 2012-05-30 |
Family
ID=41483176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100632049A Expired - Fee Related CN101609415B (zh) | 2009-07-17 | 2009-07-17 | 基于中间件的通用服务调用系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101609415B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794288B (zh) * | 2009-12-25 | 2012-04-18 | 北京大学 | 网络服务的描述信息获取方法和装置 |
CN101771701B (zh) * | 2010-01-04 | 2012-12-26 | 北京航空航天大学 | Web服务客户端自动化生成方法和装置 |
CN101799768B (zh) * | 2010-03-19 | 2012-11-28 | 上海交通大学 | 动力灾变模拟网格的Web服务封装系统 |
CN102073742B (zh) * | 2011-01-31 | 2012-11-14 | 清华大学 | 一种海量对象的存储系统及其运行方法 |
CN102420862B (zh) * | 2011-11-29 | 2015-12-02 | 上海计算机软件技术开发中心 | 一种物联网中间件消息形态转换方法 |
CN102799629B (zh) * | 2012-06-26 | 2015-05-20 | 天津大学 | Wsdl文件质量保证系统及其实现方法 |
CN103546463B (zh) * | 2013-09-30 | 2017-02-01 | 国家电网公司 | 基于网络连接中枢系统的额外参数传输方法和装置 |
CN104133717A (zh) * | 2014-08-26 | 2014-11-05 | 中电海康集团有限公司 | 一种用于数据开放系统的服务自动化生成和部署方法 |
KR102046700B1 (ko) * | 2015-02-20 | 2019-11-19 | 콘비다 와이어리스, 엘엘씨 | 메시지 버스 서비스 디렉토리 |
CN106961453A (zh) * | 2016-01-08 | 2017-07-18 | 中兴通讯股份有限公司 | 基于tosca的服务调用方法及装置 |
CN111414261B (zh) * | 2020-03-18 | 2023-08-22 | 政采云有限公司 | 一种分布式系统的跨网络调用方法、装置及相关组件 |
-
2009
- 2009-07-17 CN CN2009100632049A patent/CN101609415B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101609415A (zh) | 2009-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101609415B (zh) | 基于中间件的通用服务调用系统及方法 | |
US7475058B2 (en) | Method and system for providing a distributed querying and filtering system | |
US7877682B2 (en) | Modular distributed mobile data applications | |
US20080201338A1 (en) | Rest for entities | |
CN101295302B (zh) | 广告投放系统及方法 | |
CN102663009B (zh) | 一种支持企业用户数据私有化的web服务集成方法 | |
US9535966B1 (en) | Techniques for aggregating data from multiple sources | |
CN102402507B (zh) | 一种soa多消息机制的异构数据集成系统和方法 | |
CN107026882A (zh) | 一种资源获取的方法及相关设备 | |
US20130185322A1 (en) | Systems and methods for providing an electronic contact card | |
US7945893B2 (en) | Mapping web services description language documents to XQuery functions | |
CN103294652A (zh) | 一种数据转换方法及系统 | |
CN102333108A (zh) | 分布式缓存同步系统及方法 | |
CN102271161A (zh) | 用户中心、具有用户中心的远程信息处理系统及方法 | |
EP2521043A1 (en) | Method for establishing a relationship between semantic data and the running of a widget | |
CN101304392B (zh) | 一种用于媒体资产管理的并行应用服务网关、系统及方法 | |
CN102821133A (zh) | Xbrl数据解析的方法及服务器 | |
US7415669B1 (en) | Method and apparatus for viewing electronic commerce-related documents | |
KR100759186B1 (ko) | 비구조 웹문서 및 데이터베이스의 다양한 정보를웹서비스로 제공하기 위한 웹서비스 제공 시스템 및 그방법 | |
KR101331854B1 (ko) | 오픈 api 통합 검색 및 매쉬업 블록 기반코드 생성 장치 및 그 방법 | |
CN101620605A (zh) | 搜索方法、搜索服务器和搜索系统 | |
CN102456070B (zh) | 检索装置和检索方法 | |
CN101651656A (zh) | 一种电视台全台网系统集成中消息转换的方法及系统 | |
CN101384050A (zh) | 一种移动终端及其资源管理的方法及系统 | |
CN102769671A (zh) | 基于竞争和协作的Web服务关系网络系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120530 Termination date: 20130717 |