一种WEB服务代理的自动生成方法技术

技术编号:9671519 阅读:138 留言:0更新日期:2014-02-14 18:50
本发明专利技术提供一种WEB服务代理的自动生成方法,包括:获取源服务端WEB服务描述语言WSDL地址;根据所述WSDL地址生成源WEB服务的客户端代码和服务端代码;编译上述代码,构建WEB服务。通过本发明专利技术提供的一种WEB服务代理的自动生成方法,用于解决传统开发代理服务周期长、成本高、易出错的问题,提高效率。

【技术实现步骤摘要】
一种WEB服务代理的自动生成方法
本专利技术涉及计算机领域,特别是涉及一种面向服务的体系结构(Service-OrientedArchitecture,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-WSRI的wsimport、CXF的wsdl2java等。如图1所示,本专利技术提供的一种WEB服务代理的自动生成方法,包括:步骤1:获取源服务端WSDL(WEB服务描述语言)地址。其中,获取源服务端WSDL地址可以通过以下方式获取:直接获取,通过外部程序在指定一个包含URL的字符串或包含多个URL的清单中获取;或者,通过服务定义的WSDL文件,通过配置文件方式在服务运用时提供WSDL地址给代理服务源服务端。步骤2:配置代理服务构建环境。在该步骤中,主要用来生成代理服务编译和构建所需要的配置文件以及工程目录,具体目录结构与文件见图2。步骤3:根据所述WSDL地址生成源WEB服务的客户端代码和服务端代码;具体的实现方法如下:生成调用源WEB服务的客户端代码。调用JAX-WS服务代码生成工具,根据所述WSDL地址生成源WEB服务的客户端代码,该客户端代码包括SOAP(SimpleObjectAccessProtocol简单对象访问协议)消息的封装类,服务接口以及客户端工厂类。生成用于发布代理服务的服务端代码。具体方法如下:利用客户端代码生成用于发布代理服务的服务端代码。调用客户端代码中的服务接口,通过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方法,方法签名直接沿用接口的方法签名,方法的内部实现即调用类成员属性,访问服务提供方(形式为:returnproxy.方法名(入参)或proxy.方法名(入参))。如图3所示,代理服务内部逻辑实际上将访问代理服务的请求通过源服务的客户端转发给源服务,响应则正好相反。WEB服务消费方只看的到代理服务暴露的接口,其按照接口封装SOAP消息发送请求(1请求)给代理服务,代理服务获取到请求后,(2请求)调用源服务的客户端,将该请求(3请求)发送给源服务。而源服务端对请求的SOAP消息做处理后,响应(4响应)的消息发送回代理服务端,并由代理服务端返回给服务消费方。本文档来自技高网...
一种WEB服务代理的自动生成方法

【技术保护点】
一种WEB服务代理的自动生成方法,其特征在于,包括:获取源服务端WEB服务描述语言WSDL地址;根据所述WSDL地址生成源WEB服务的客户端代码和服务端代码;编译上述代码,构建WEB服务。

【技术特征摘要】
1.一种WEB服务代理的自动生成方法,其特征在于,包括:获取源服务端WEB服务描述语言WSDL地址;根据所述WSDL地址生成源WEB服务的客户端代码和服务端代码,包括:调用JAX-WS服务代码生成工具,根据所述WSDL地址生成源WEB服务的客户端代码,该客户端代码包括简单对象访问协议SOAP消息的封装类,服务接口以及客户端工厂类;利用客户端代码生成用于发布代理服务的服务端代码,具体方法如下:调用客户端代码中的服务接口,通过Java字符串拼装生成服务端代码;编译上述代码,构建WEB服务。2.如权利要求1所述的方法,其特征在于,获取源服务端WSDL地址通过以下方...

【专利技术属性】
技术研发人员:冀晋星
申请(专利权)人:深圳市远行科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1