CN103577380A - 一种动态路由服务的自动生成方法 - Google Patents

一种动态路由服务的自动生成方法 Download PDF

Info

Publication number
CN103577380A
CN103577380A CN201310507344.7A CN201310507344A CN103577380A CN 103577380 A CN103577380 A CN 103577380A CN 201310507344 A CN201310507344 A CN 201310507344A CN 103577380 A CN103577380 A CN 103577380A
Authority
CN
China
Prior art keywords
service
code
route
wsdl document
client
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.)
Granted
Application number
CN201310507344.7A
Other languages
English (en)
Other versions
CN103577380B (zh
Inventor
侯勇传
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHENZHEN VISPRACTICE TECHNOLOGY Corp
Original Assignee
SHENZHEN VISPRACTICE TECHNOLOGY Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SHENZHEN VISPRACTICE TECHNOLOGY Corp filed Critical SHENZHEN VISPRACTICE TECHNOLOGY Corp
Priority to CN201310507344.7A priority Critical patent/CN103577380B/zh
Publication of CN103577380A publication Critical patent/CN103577380A/zh
Application granted granted Critical
Publication of CN103577380B publication Critical patent/CN103577380B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种动态路由服务的自动生成方法,包括:获取源服务端的服务定义WEB服务描述语言WSDL文件;根据所述WSDL文件生成源WEB服务的客户端代码和服务端代码;编译上述代码,构建路由服务。通过本发明提供的一种动态路由服务的自动生成方法,用于提高开发效率并解决现有技术开发路由服务中硬编码、周期长、成本高、易出错、不可复用的问题。

Description

一种动态路由服务的自动生成方法
技术领域
本发明涉及计算机领域,特别是涉及一种面向服务的体系结构(Service-Oriented Architecture,SOA)实施过程中动态路由服务的自动生成方法。
背景技术
路由服务,是一种通过解析SOAP(Simple Object Access Protocol,简单对象访问协议)消息中的指定的信息,进而动态的将SOAP消息分发给不同源WEB服务的一种WEB服务,原理如图1所示。解析的SOAP消息一般是通过事先约定,在某一个字段中加入路由信息,而路由服务则根据这个信息检索路由信息表,获取源WEB服务地址,进而调用源服务。路由服务的本质是WEB服务代理,只不过是代理了多个接口相同的WEB服务。
目前开发这种类型的服务是通过人力开发完成。在服务定义阶段,约定服务路由字段,开发阶段根据约定将该逻辑硬编码到服务代码中,开发使用的技术有CXF、ORACLE的BEPL、AXSI2等,其缺点很明显:
硬编码,路由字段变更意味着修改代码、编译、部署等一系列过程;
开发周期长,人力开发;
人力成本高,学习开发使用的技术、框架需要时间;
易出错,代码不可复用。
所以,有必要提出一种动态路由服务的自动生成方法来优化这一过程,提高生产效率。
发明内容
本发明的目的在于提供一种动态路由服务的自动生成方法,用于提高开发效率并解决现有技术开发路由服务中硬编码、周期长、成本高、易出错、不可复用的问题。
为了解决以上技术问题,本发明提供一种动态路由服务的自动生成方法,包括:获取源服务端的服务定义WEB服务描述语言WSDL文件;根据所述WSDL文件生成源WEB服务的客户端代码和服务端代码;编译上述代码,构建路由服务。
进一步地,源服务端的服务定义WSDL文件通过外部程序在指定服务定义WSDL文件,上传至程序的方式获取。
进一步地,通过调用JAX-WS服务代码生成工具,根据所述WSDL文件生成源WEB服务的客户端代码和服务端代码。
进一步地,通过调用JAX-WS服务代码生成工具,根据所述WSDL文件生成源WEB服务的客户端代码和服务端代码,具体包括:
调用JAX-WS服务代码生成工具,根据所述WSDL文件生成源WEB服务的客户端代码,该客户端代码包括简单对象访问协议SOAP消息的封装类,服务接口以及客户端工厂类;
利用客户端代码生成用于发布代理服务的服务端代码,具体方法如下:调用客户端代码中的服务接口,通过复用动态路由服务公用父类、获取反射路由字段及使用缓存来生成服务端代码。
进一步地,通过调用ANT工具编译上述代码,构建路由服务。
进一步地,所述方法进一步包括:在根据所述WSDL文件生成源WEB服务的客户端代码和服务端代码之前,先配置代理服务构建环境。
进一步地,所述方法进一步包括:部署并发布构建路由服务,通过调用ANT工具将构建好的路由服务部署至J2EE容器。
与现有传统服务代理(封装)开发相比,本发明提供的一种动态路由服务的自动生成方法,只需要提供WEB服务定义信息即可自动生成代理服务,不再需要人力开发,不会出错;生成的WEB服务符合J2EE5规范中的JAX-WS2.0规范,服务总线的选择更加多样,J2EE容器均可部署;通过一个动态路由服务公用父类解决了代码复用问题;利用反射获取路由字段,避免了硬编码;使用缓存避免了频繁访问数据库带来的性能低下。动态配置路由字段和路由表信息,可以在服务运行是实时添加、修改、删除路由信息,只要服务定义(WSDL文件)没有发生变化,就不需要重新生成路由服务,彻底避免了硬编码带来的项目编译重新部署的过程,避免了人工出错,效率高;自动部署发布服务,免去部署的时间,即时获取代理路由WEB服务的WSDL地址,即可使用。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明提供的一种路由服务原理图。
图2是本发明提供一种动态路由服务的自动生成方法的流程图。
图3是本发明在生成路由服务前环境配置生成的目录结构与文件树。
图4是本发明提供的动态路由原理图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
在本发明中,动态路由服务自动生成方法涉及几个部分:J2EE容器、ANT工具、JAX-WS服务代码生成工具。其中:
J2EE容器,包括JBOSS,Weblogic,GlassFish等,这些均可以作为服务总线;另外,由于生成代理服务是JAX-WS2.0,所以要求支持的J2EE版本5以上。
ANT工具是由Apache软件基金会所提供,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。在本发明中,该工具用来编译和构建代理服务。
JAX-WS服务代码生成工具,包括JAX-WS RI的wsimport、CXF的wsdl2java等。
如图2所示,本发明提供的一种动态路由服务的自动生成方法,包括:
步骤1:获取源服务端的服务定义WSDL(WEB服务描述语言)文件。其中,源服务端的服务定义WSDL文件通过外部程序在指定服务定义WSDL文件,上传至程序的方式获取。
步骤2:配置路由服务构建环境。在该步骤中,主要用来生成代理服务编译和构建所需要的配置文件以及工程目录,具体目录结构与文件见图3。
步骤3:根据所述WSDL文件生成源WEB服务的客户端代码和服务端代码;具体的实现方法如下:
生成调用源WEB服务的客户端代码。调用JAX-WS服务代码生成工具,根据所述WSDL文件生成源WEB服务的客户端代码,该客户端代码包括SOAP(Simple Object Access Protocol简单对象访问协议)消息的封装类,服务接口以及客户端工厂类;
生成用于发布代理服务的服务端代码。调用客户端代码中的服务接口,通过复用动态路由服务公用父类、获取反射路由字段及使用缓存来生成服务端代码。具体说明如下:
动态路由服务公用父类,该类包含:
a1、检索路由表(最基本的路由表由服务标识、路由CODE、WSDL地址组成)。该功能获取当前访问的服务路由CODE对应的WSDL地址。通过服务标识和路由CODE从数据库中检索出唯一的值。
b1、查找服务指定的路由字段。从数据库中查询当前访问服务的路由字段。
c1、通过JAVA反射遍历SOAP请求,通过比对XmlElement标注来获取SOAP请求中路由字段对象,进而通过Field对象的get方法获取该字段的值。
动态路由服务子类,该类继承动态路由服务公用父类,并且实现步骤3中生成的服务接口。如下:
a2、定义类所在的包(例如:基础包.服务英文名称(com.base.ws.srvname)),以及通过import关键字引入需要用到的包、类或接口等(包括:步骤3生成的客户端包、ejb的标注(javax.ejb.Remote等)、jws的标注(javax.jws.WebMethod等));
b2、生成类签名,包括定义类名(例如:服务英文名称ESBProxy(srvnameESBProxy))、添加ejb标注(例如:Remote等ejb标注)、添加jws标注(例如WebService等)、通过implements关键字实现步骤3中生成的服务接口;
c2、定义类成员属性,用来缓存路由表和路由属性;
d2、实现步骤3中生成的服务接口的webservice方法,方法签名直接沿用接口的方法签名。方法实现复用公用父类提供的方法(首先通过方法b1获取该服务指定的路由字段并做缓存,第二次直接使用缓存字段;然后通过方法c1获取请求对象的路由字段值;最后使用方法a1获取路由字段值对应的WSDL地址)获取路由字段值对应的WSDL地址,将WSDL地址传入客户端调用对应的源服务。
步骤4:编译上述代码,构建路由服务。具体的实现方法如下:调用ANT工具编译上述代码,构建路由服务。
步骤5:部署并发布构建路由服务。调用ANT工具将构建好的构建路由服务部署至J2EE容器,发布构建路由服务。
动态路由原理如图4所示,子类继承父类a1、b1和c1三个方法,并且自建路由字段与路由表缓存。当请求该服务的时候,子类首先查找路由字段是否有缓存,没有就调用父类b1方法获取,并缓存;之后调用父类c1方法获取路由字段值;第三,通过路由字段值查找路由表缓存,没有就调用父类a1方法获取WSDL地址,并做缓存;最后通过目标WSDL地址调用源服务,获取响应后返回,一次调用结束。
上述说明示出并描述了本发明的一个优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

Claims (7)

1.一种动态路由服务的自动生成方法,其特征在于,包括:获取源服务端的服务定义WEB服务描述语言WSDL文件;根据所述WSDL文件生成源WEB服务的客户端代码和服务端代码;编译上述代码,构建路由服务。
2.如权利要求1所述的方法,其特征在于,源服务端的服务定义WSDL文件通过外部程序在指定服务定义WSDL文件,上传至程序的方式获取。
3.如权利要求1所述的方法,其特征在于,通过调用JAX-WS服务代码生成工具,根据所述WSDL文件生成源WEB服务的客户端代码和服务端代码。
4.如权利要求3所述的方法,其特征在于,通过调用JAX-WS服务代码生成工具,根据所述WSDL文件生成源WEB服务的客户端代码和服务端代码,具体包括:
调用JAX-WS服务代码生成工具,根据所述WSDL文件生成源WEB服务的客户端代码,该客户端代码包括简单对象访问协议SOAP消息的封装类,服务接口以及客户端工厂类;
利用客户端代码生成用于发布代理服务的服务端代码,具体方法如下:调用客户端代码中的服务接口,通过复用动态路由服务公用父类、获取反射路由字段及使用缓存来生成服务端代码。
5.如权利要求1所述的方法,其特征在于,通过调用ANT工具编译上述代码,构建路由服务。
6.如权利要求1所述的方法,其特征在于,所述方法进一步包括:在根据所述WSDL文件生成源WEB服务的客户端代码和服务端代码之前,先配置代理服务构建环境。
7.如权利要求1所述的方法,其特征在于,所述方法进一步包括:部署并发布构建路由服务,通过调用ANT工具将构建好的路由服务部署至J2EE容器。
CN201310507344.7A 2013-10-24 2013-10-24 一种动态路由服务的自动生成方法 Active CN103577380B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310507344.7A CN103577380B (zh) 2013-10-24 2013-10-24 一种动态路由服务的自动生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310507344.7A CN103577380B (zh) 2013-10-24 2013-10-24 一种动态路由服务的自动生成方法

Publications (2)

Publication Number Publication Date
CN103577380A true CN103577380A (zh) 2014-02-12
CN103577380B CN103577380B (zh) 2017-06-13

Family

ID=50049191

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310507344.7A Active CN103577380B (zh) 2013-10-24 2013-10-24 一种动态路由服务的自动生成方法

Country Status (1)

Country Link
CN (1) CN103577380B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107171959A (zh) * 2017-04-20 2017-09-15 深圳中兴网信科技有限公司 基于soa的动态路由方法及动态路由系统
CN108932130A (zh) * 2018-06-29 2018-12-04 深圳市元征科技股份有限公司 一种实现服务器功能调用的代码生成方法及装置
CN111694613A (zh) * 2020-05-29 2020-09-22 平安科技(深圳)有限公司 应用程序模块间的解耦方法、电子装置及存储介质
CN112416621A (zh) * 2020-11-24 2021-02-26 武汉锂钠氪锶科技有限公司 一种基于Web技术管控系统资源的方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1464724A (zh) * 2002-06-14 2003-12-31 田种楠 一种使用动态传输网络以传输信息至远端的方法
US20040267949A1 (en) * 2003-06-30 2004-12-30 Rover Jeremy L. System and method for synchronous configuration of DHCP server and router interfaces
US20060089965A1 (en) * 2004-10-26 2006-04-27 International Business Machines Corporation Dynamic linkage of an application server and a Web server
CN101938528A (zh) * 2010-08-12 2011-01-05 漳州市顺和达软件有限公司 动态ip固化解析方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1464724A (zh) * 2002-06-14 2003-12-31 田种楠 一种使用动态传输网络以传输信息至远端的方法
US20040267949A1 (en) * 2003-06-30 2004-12-30 Rover Jeremy L. System and method for synchronous configuration of DHCP server and router interfaces
US20060089965A1 (en) * 2004-10-26 2006-04-27 International Business Machines Corporation Dynamic linkage of an application server and a Web server
CN101938528A (zh) * 2010-08-12 2011-01-05 漳州市顺和达软件有限公司 动态ip固化解析方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杨辉: ""基于OPC-XML规范的DVR网络模型"", 《兵工自动化》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107171959A (zh) * 2017-04-20 2017-09-15 深圳中兴网信科技有限公司 基于soa的动态路由方法及动态路由系统
CN108932130A (zh) * 2018-06-29 2018-12-04 深圳市元征科技股份有限公司 一种实现服务器功能调用的代码生成方法及装置
CN108932130B (zh) * 2018-06-29 2022-02-22 深圳市元征科技股份有限公司 一种实现服务器功能调用的代码生成方法及装置
CN111694613A (zh) * 2020-05-29 2020-09-22 平安科技(深圳)有限公司 应用程序模块间的解耦方法、电子装置及存储介质
CN111694613B (zh) * 2020-05-29 2023-07-25 平安科技(深圳)有限公司 应用程序模块间的解耦方法、电子装置及存储介质
CN112416621A (zh) * 2020-11-24 2021-02-26 武汉锂钠氪锶科技有限公司 一种基于Web技术管控系统资源的方法及系统

Also Published As

Publication number Publication date
CN103577380B (zh) 2017-06-13

Similar Documents

Publication Publication Date Title
US9489189B2 (en) Dynamically generate and execute a context-specific patch installation procedure on a computing system
CN101127655B (zh) 集成现有基于万维网的系统的方法和系统
CN110187902B (zh) 基于spring boot的项目改造方法、装置、设备及存储介质
CN103019928A (zh) 一种自动化测试方法和系统
CN101697139A (zh) 一种远程过程调用方法、装置和注册库
CN102566984B (zh) 一种配置参数的方法及装置
CN111124379B (zh) 页面生成方法、装置、电子设备及存储介质
CN103577380A (zh) 一种动态路由服务的自动生成方法
CN103581310B (zh) 一种web服务代理的自动生成方法
JP2010250378A (ja) ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム
CN104461531A (zh) 一种报表系统自定义函数的实现方法
CN101021786A (zh) 一种调用通用构件的方法
CN110750310B (zh) 基于ios系统组件化开发的二进制和源码切换方法
CN112114789B (zh) 一种业务开发方法及设备
CN112130830A (zh) 接口生成方法、装置及电子设备
CN103488517A (zh) Php代码编译方法、php代码运行方法及装置
CN105446819A (zh) 一种服务连接系统及其设计方法
CN102111160A (zh) 用于反应式系统测试的编解码系统及其编解码器
CN111240772A (zh) 一种基于区块链的数据处理方法、装置及存储介质
CN100470472C (zh) 一种基于解释器和解析器实现地理信息服务的系统及方法
CN112131230A (zh) 应用SaaS化实现方法、装置、设备及存储介质
CN103793227A (zh) 一种实现wcf服务的方法
Biehl et al. Model-based service discovery and orchestration for OSLC services in tool chains
CN115113869A (zh) 基于浏览器的在线网页开发方法及装置
CN112764718A (zh) 一种代码多端使用的方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 518057, Guangdong Province, Nanshan District hi tech Zone, North Road, Lang Lang, No. 13 Thunis building, C,, C302

Applicant after: Shenzhen travel Polytron Technologies Inc

Address before: 518057, Guangdong Province, Nanshan District hi tech Zone, North Road, Lang Lang, No. 13 Thunis building, C,, C302

Applicant before: Shenzhen Vispractice Technology Corporation

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant