CN103581310B - 一种web服务代理的自动生成方法 - Google Patents
一种web服务代理的自动生成方法 Download PDFInfo
- Publication number
- CN103581310B CN103581310B CN201310507350.2A CN201310507350A CN103581310B CN 103581310 B CN103581310 B CN 103581310B CN 201310507350 A CN201310507350 A CN 201310507350A CN 103581310 B CN103581310 B CN 103581310B
- Authority
- CN
- China
- Prior art keywords
- service
- code
- web service
- wsdl
- source
- 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.)
- Active
Links
Landscapes
- Computer And Data Communications (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种WEB服务代理的自动生成方法,包括:获取源服务端WEB服务描述语言WSDL地址;根据所述WSDL地址生成源WEB服务的客户端代码和服务端代码;编译上述代码,构建WEB服务。通过本发明提供的一种WEB服务代理的自动生成方法,用于解决传统开发代理服务周期长、成本高、易出错的问题,提高效率。
Description
技术领域
本发明涉及计算机领域,特别是涉及一种面向服务的体系结构(Service-Oriented Architecture,SOA)实施过程中WEB服务代理的自动生成方法。
背景技术
目前,SOA实施过程中,为了系统和高效的管理服务,普遍采用的方法是将服务接入到服务总线中。而将服务接入总线时需要进行服务二次封装,即服务代理。目前这些过程只能通过人力开发WEB服务完成,开发使用的技术有CXF、ORACLE的BEPL、AXSI2等,其缺点很明显:开发周期长、人力成本高、易出错。
所以,有必要提出一种WEB服务的自动化生成的方法来优化这一过程,提高生产效率。
发明内容
本发明的目的在于提供一种WEB服务代理的自动生成方法,用于解决传统开发代理服务周期长、成本高、易出错的问题,提高效率。
为了解决以上技术问题,本发明提供一种WEB服务代理的自动生成方法,包括:获取源服务端WEB服务描述语言WSDL地址;根据所述WSDL地址生成源WEB服务的客户端代码和服务端代码;编译上述代码,构建WEB服务。
进一步地,获取源服务端WSDL地址通过以下方式获取:直接获取,通过外部程序在指定一个包含URL的字符串或包含多个URL的清单中获取;或者,通过服务定义的WSDL文件,通过配置文件方式在服务运行时指定代理服务源服务端WSDL地址。
进一步地,通过调用JAX-WS服务代码生成工具,根据所述WSDL地址生成源WEB服务的客户端代码和服务端代码。
进一步地,通过调用JAX-WS服务代码生成工具,根据所述WSDL地址生成源WEB服务的客户端代码和服务端代码,具体包括:
调用JAX-WS服务代码生成工具,根据所述WSDL地址生成源WEB服务的客户端代码,该客户端代码包括简单对象访问协议SOAP消息的封装类,服务接口以及客户端工厂类;
利用客户端代码生成用于发布代理服务的服务端代码,具体方法如下:调用客户端代码中的服务接口,通过Java字符串拼装生成服务端代码。
进一步地,通过调用ANT工具编译上述代码,构建WEB服务。
进一步地,所述方法进一步包括:在根据所述WSDL地址生成源WEB服务的客户端代码和服务端代码之前,先配置代理服务构建环境。
进一步地,所述方法进一步包括:部署并发布WEB服务,通过调用ANT工具将构建好的WEB服务部署至J2EE容器。
与现有传统服务代理(封装)开发相比,本发明提供的一种WEB服务代理的自动生成方法,只需要提供源WEB服务的WSDL(WEB服务描述语言)地址即可自动生成代理服务,不再需要人力开发,不会出错;生成的WEB服务符合J2EE5规范中的JAX-WS2.0规范,服务总线的选择更加多样,J2EE容器均可部署;支持批量代理,允许导入多个WSDL地址,一次生成多个服务代理,高效率;自动部署发布服务,免去部署的时间,即时获取代理WEB服务的WSDL地址,即可使用。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明提供的一种WEB服务代理的自动生成方法的流程图。
图2是本发明在生成代理服务前环境配置生成的目录结构与文件树。
图3是本发明生成的代理服务原理图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
在本发明中,WEB服务代理的自动生成涉及几个部分:J2EE容器、ANT工具、JAX-WS服务代码生成工具。其中:
J2EE容器,包括JBOSS,Weblogic,GlassFish等,这些均可以作为服务总线;另外,由于生成代理服务是JAX-WS2.0,所以要求支持的J2EE版本5以上。
ANT工具是由Apache软件基金会所提供,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。在本发明中,该工具用来编译和构建代理服务。
JAX-WS服务代码生成工具,包括JAX-WS RI的wsimport、CXF的wsdl2java等。
如图1所示,本发明提供的一种WEB服务代理的自动生成方法,包括:
步骤1:获取源服务端WSDL(WEB服务描述语言)地址。其中,获取源服务端WSDL地址可以通过以下方式获取:
直接获取,通过外部程序在指定一个包含URL的字符串或包含多个URL的清单中获取;或者,
通过服务定义的WSDL文件,通过配置文件方式在服务运用时提供WSDL地址给代理服务源服务端。
步骤2:配置代理服务构建环境。在该步骤中,主要用来生成代理服务编译和构建所需要的配置文件以及工程目录,具体目录结构与文件见图2。
步骤3:根据所述WSDL地址生成源WEB服务的客户端代码和服务端代码;具体的实现方法如下:
生成调用源WEB服务的客户端代码。调用JAX-WS服务代码生成工具,根据所述WSDL地址生成源WEB服务的客户端代码,该客户端代码包括SOAP(Simple Object AccessProtocol简单对象访问协议)消息的封装类,服务接口以及客户端工厂类。
生成用于发布代理服务的服务端代码。具体方法如下:利用客户端代码生成用于发布代理服务的服务端代码。调用客户端代码中的服务接口,通过Java字符串拼装(StringBuffer等)生成服务端代码,然后使用文件流写到硬盘上。具体拼装思路是:由于代理服务需要提供源端相同的接口,所以服务端必须要实现服务接口,该服务接口在生成客户端时生成,实际上就是根据源端WSDL地址生成的客户端的服务接口。具体实现如下:
a、定义类所在的包(例如:基础包.服务英文名称(com.base.ws.srvname)),以及通过import关键字引入需要用到的包、类或接口等(包括:上述步骤3生成的客户端包、ejb的标注(javax.ejb.Remote等)、jws的标注(javax.jws.WebMethod等));
b、生成类签名,包括定义类名(例如:服务英文名称ESBProxy(srvnameESBProxy))、添加ejb标注(例如:@Remote等ejb标注)、添加jws标注(例如@WebService等)、通过implements关键字实现步骤3中生成的服务接口;
c、生成类成员属性,主要是定义客户端属性(形式为:private服务接口proxy=new工厂类().getXXXPort());
d、实现步骤3中生成的服务接口的webservice方法,方法签名直接沿用接口的方法签名,方法的内部实现即调用类成员属性,访问服务提供方(形式为:return proxy.方法名(入参)或proxy.方法名(入参))。
如图3所示,代理服务内部逻辑实际上将访问代理服务的请求通过源服务的客户端转发给源服务,响应则正好相反。WEB服务消费方只看的到代理服务暴露的接口,其按照接口封装SOAP消息发送请求(1请求)给代理服务,代理服务获取到请求后,(2请求)调用源服务的客户端,将该请求(3请求)发送给源服务。而源服务端对请求的SOAP消息做处理后,响应(4响应)的消息发送回代理服务端,并由代理服务端返回给服务消费方。因为做的是透明代理,所以三个请求,三个响应并无不同。
步骤4:编译上述代码,构建WEB服务。具体的实现方法如下:调用ANT工具编译上述代码,构建WEB服务。
步骤5:部署并发布WEB服务。调用ANT工具将构建好的WEB服务部署至J2EE容器,发布WEB服务。
在步骤1中,当源服务端WSDL地址的获取是通过服务定义的WSDL文件,通过配置文件方式在服务运用时提供WSDL地址给代理服务源服务端时,实际上是对服务提供方即源服务做了松耦合的处理,将源服务WSDL地址提供推后到了服务运行时。在该模式中,源服务的地址不在硬编码在程序中,而是由配置决定(例如:java的properties文件、数据库,另外,为了提高性能,可以在内存中做一个缓存),这样在接口没有变动的前提下,不管源服务端在网络上做如何变动,代理服务均不需要做变动。
上述说明示出并描述了本发明的一个优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (5)
1.一种WEB服务代理的自动生成方法,其特征在于,包括:获取源服务端WEB服务描述语言WSDL地址;根据所述WSDL地址生成源WEB服务的客户端代码和服务端代码,包括:调用JAX-WS服务代码生成工具,根据所述WSDL地址生成源WEB服务的客户端代码,该客户端代码包括简单对象访问协议SOAP消息的封装类,服务接口以及客户端工厂类;利用客户端代码生成用于发布代理服务的服务端代码,具体方法如下:调用客户端代码中的服务接口,通过Java字符串拼装生成服务端代码;编译上述代码,构建WEB服务。
2.如权利要求1所述的方法,其特征在于,获取源服务端WSDL地址通过以下方式获取:直接获取,通过外部程序在指定一个包含URL的字符串或包含多个URL的清单中获取;或者,通过服务定义的WSDL文件,通过配置文件方式在服务运用时提供WSDL地址给代理服务源服务端。
3.如权利要求1所述的方法,其特征在于,通过调用ANT工具编译上述代码,构建WEB服务。
4.如权利要求1所述的方法,其特征在于,所述方法进一步包括:在根据所述WSDL地址生成源WEB服务的客户端代码和服务端代码之前,先配置代理服务构建环境。
5.如权利要求1所述的方法,其特征在于,所述方法进一步包括:部署并发布WEB服务,通过调用ANT工具将构建好的WEB服务部署至J2EE容器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310507350.2A CN103581310B (zh) | 2013-10-24 | 2013-10-24 | 一种web服务代理的自动生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310507350.2A CN103581310B (zh) | 2013-10-24 | 2013-10-24 | 一种web服务代理的自动生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103581310A CN103581310A (zh) | 2014-02-12 |
CN103581310B true CN103581310B (zh) | 2017-04-05 |
Family
ID=50052218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310507350.2A Active CN103581310B (zh) | 2013-10-24 | 2013-10-24 | 一种web服务代理的自动生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103581310B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105743724A (zh) * | 2014-12-10 | 2016-07-06 | 深圳中兴网信科技有限公司 | 一种服务测试方法和装置 |
CN105357316B (zh) * | 2015-12-04 | 2018-07-03 | 航天科工智慧产业发展有限公司 | 一种快速实现服务代理的方法和系统 |
CN106843936B (zh) * | 2016-12-29 | 2019-12-10 | 北京航天测控技术有限公司 | 一种自动化部署Web应用环境的方法 |
CN107171959B (zh) * | 2017-04-20 | 2020-06-19 | 深圳中兴网信科技有限公司 | 基于soa的动态路由方法及动态路由系统 |
CN109451014B (zh) * | 2018-11-02 | 2021-02-05 | 科大国创软件股份有限公司 | 一种WebService代理系统及其透明代理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1819588A (zh) * | 2006-03-07 | 2006-08-16 | 上海科泰世纪科技有限公司 | 基于中间件平台提供网络服务的方法 |
CN101534324A (zh) * | 2009-04-14 | 2009-09-16 | 河北全通通信有限公司 | 基于DotNet平台的可插拔的Web服务动态调用方法 |
CN102323884A (zh) * | 2011-09-07 | 2012-01-18 | 山东中创软件工程股份有限公司 | 一种多Web服务发布的方法及Web服务容器 |
CN102404391A (zh) * | 2011-11-10 | 2012-04-04 | 山东浪潮齐鲁软件产业股份有限公司 | 一种面向接口的web服务调用方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1464724A (zh) * | 2002-06-14 | 2003-12-31 | 田种楠 | 一种使用动态传输网络以传输信息至远端的方法 |
US7386629B2 (en) * | 2003-06-30 | 2008-06-10 | Intel Corporation | 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 |
CN102014154B (zh) * | 2010-11-05 | 2013-10-09 | 山东科技大学 | 基于网格服务的遥感图像提取与共享系统及提取与共享方法 |
-
2013
- 2013-10-24 CN CN201310507350.2A patent/CN103581310B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1819588A (zh) * | 2006-03-07 | 2006-08-16 | 上海科泰世纪科技有限公司 | 基于中间件平台提供网络服务的方法 |
CN101534324A (zh) * | 2009-04-14 | 2009-09-16 | 河北全通通信有限公司 | 基于DotNet平台的可插拔的Web服务动态调用方法 |
CN102323884A (zh) * | 2011-09-07 | 2012-01-18 | 山东中创软件工程股份有限公司 | 一种多Web服务发布的方法及Web服务容器 |
CN102404391A (zh) * | 2011-11-10 | 2012-04-04 | 山东浪潮齐鲁软件产业股份有限公司 | 一种面向接口的web服务调用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103581310A (zh) | 2014-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101127655B (zh) | 集成现有基于万维网的系统的方法和系统 | |
CN109597661B (zh) | 一种业务功能配置方法及装置 | |
CN103581310B (zh) | 一种web服务代理的自动生成方法 | |
JP6494609B2 (ja) | カスタマイズされたソフトウェア開発キット(sdk)生成のための方法および装置 | |
CN110187902B (zh) | 基于spring boot的项目改造方法、装置、设备及存储介质 | |
US9363289B2 (en) | Instrumentation and monitoring of service level agreement (SLA) and service policy enforcement | |
CN110083790A (zh) | 页面编辑方法、页面输出方法、装置、计算机设备及介质 | |
US20120291009A1 (en) | Web Service Proxy Interface Augmentation | |
CN106598620A (zh) | 代码生成方法及代码生成器 | |
CN104020992B (zh) | 由C/C++生成Java Web服务的方法及装置 | |
CN105278946A (zh) | 一种RESTful API可视化方法 | |
CN109871241A (zh) | 一种跨环境应用服务器的配置方法 | |
CN103577380B (zh) | 一种动态路由服务的自动生成方法 | |
Martinez et al. | Recovering sequence diagrams from object-oriented code: An ADM approach | |
CN113778897B (zh) | 接口的自动测试方法、装置、设备及存储介质 | |
CN104166545A (zh) | 一种网页资源的嗅探方法以及装置 | |
CN101876998A (zh) | 一种实现数据编辑的方法和系统 | |
CN108153745B (zh) | 一种应用数据调用方法及应用开发系统 | |
CN111124924A (zh) | Api部署方法、装置、电子设备及存储介质 | |
KR100751449B1 (ko) | OSGi 서비스 플랫폼 기반의 스텁 번들 생성 방법 | |
Song et al. | Implementation on network teaching system based on Java EE architecture | |
Fayçal et al. | Integrating legacy systems in a SOA using an agent based approach for information system agility | |
Biehl et al. | Model-based service discovery and orchestration for OSLC services in tool chains | |
CN108932130B (zh) | 一种实现服务器功能调用的代码生成方法及装置 | |
Thu et al. | A Method of Automated Mock Data Generation for RESTful API Testing |
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 |