根据wsdl反向生成webservice服务端(3种方法)

摘要:
Sun jaxws。xml是生成web服务的代码。Sun jaxws的内容。xml如下:Web xml配置信息如下:红色框包含由生成的代码生成的webservice服务的配置信息。可以正确打开wsdl,表明服务已成功发布。此时,您可以实现HelloWorldImplPortImpl中的方法。java,然后通过步骤4中生成的客户端或soapUI调用它们。

前言

正常情况下,都是我们项目组创建一个webservice服务端,客户通过我们提供的wsdl地址生成客户端并进行访问;但是最近和一个国企做接口对接,他们却只提供给我们wsdl,需要我们根据wsdl生成服务端,提供服务给他们。故有此文。

生成方式

通过wsdl生成服务端的方法总共有3方法

l 使用soapUI生成

l 使用myeclipseweb service生成

使用wsdl2java.bat生成

工具

l SoapUI 3.5.1

l Myeclipse 10

l Myeclipse 10自带的tomcat6

l Apache-cxf 2.2.8 安装文件夹下的bin文件下的wsdl2java.bat请提前下载apache-cxf,并且解压缩),把安装路径配置为全局变量,如下图:CXF_HOME全局变量是第三种生成方式要用的。

 根据wsdl反向生成webservice服务端(3种方法)第1张根据wsdl反向生成webservice服务端(3种方法)第2张

环境

l JDK1.6

l JavaEE6

假设wsdl地址为:http://localhost:7001/aueic/webservice/HelloWorld?wsdl;如果没有现成的wsdl,也可以用myeclipse编写一个wsdl文件,方法自行百度

1.使用soapUI生成

1. 我这边使用cxf来生成,所以首先把cxf的解压缩目录配置到soapUI的工具变量中,需要配置到bin目录。

 根据wsdl反向生成webservice服务端(3种方法)第3张

2. 新建一个项目

 根据wsdl反向生成webservice服务端(3种方法)第4张

3. 输入项目名称,wsdl地址或者文件,创建请求,点击OK根据需要可以选择Create TestSuite和其他选项。

 根据wsdl反向生成webservice服务端(3种方法)第5张

4. 生成的项目如下所示:表名该接口对外提供6方法

 根据wsdl反向生成webservice服务端(3种方法)第6张

5. 右击【HelloWorldImplServiceSoapBinding】节点,选择【Generate Code】,再选择Apache CXF(注:我这边使用的是cxf,读者可以根据需要使用其他的),如下图:

 根据wsdl反向生成webservice服务端(3种方法)第7张

6. 填写生成的代码输出的系统路径,以及生成代码的所放的包路径,因为我这边需要的是生成webservice的服务端,所以我选择的是【Implementation】,生成实现webservice接口的子类。其中【Client】会生成一个调用客户端,生成webservice客户端需要用到了,而Server可以用来把生成的代码,发布为一个接口,根据需要选择。最后点击【Generate】生成代码。

 根据wsdl反向生成webservice服务端(3种方法)第8张

7. 最后生成成功,如下图:注意图中的wsdl2java就是利用了apache cxf安装文件夹的wsdl2java.bat生成的。

 根据wsdl反向生成webservice服务端(3种方法)第9张

8. 在系统F下面找到如下的代码列表,实现IHelloWorldImpl.Java里面的方法,把该类发布为一个webservice服务可以采用多种方法发布,如上面第5的生成server,然后再jrejavaee环境下执行server里面的mian方法即可生成wsdl服务端的方式二提供了另一种方法,还可以通过spring具体实现自行百度)。

接口IHelloWorld.java中的每个方法会生成两个类,如SayHello.java和SayHelloResponse.java,其中第一个是用来映射请求时的入参,第二个是响应返回值。

 根据wsdl反向生成webservice服务端(3种方法)第10张

2.使用myeclipse的web service Project生成

1. 先new 一个web service Project。取名helloworld

 根据wsdl反向生成webservice服务端(3种方法)第11张

根据wsdl反向生成webservice服务端(3种方法)第12张

2. 生成的项目如下图:并且在项目中新建包com.jdf,下一步的时候会用到。

 根据wsdl反向生成webservice服务端(3种方法)第13张

3. 右击helloworld项目,new一个web service

 根据wsdl反向生成webservice服务端(3种方法)第14张

根据wsdl反向生成webservice服务端(3种方法)第15张

4. WSDL URL方式一是同一个地址,也可以是wsdl文件(myeclipse可以新建和编辑wsdl文件)。Java package是生成的代码要放的包路径,必须是已经存在的,不然会提示错误。其他选项根据需要选择。然后next。然后就是验证wsdl格式,点击Finish,生成代码。

 根据wsdl反向生成webservice服务端(3种方法)第16张

5. 生成的代码如下图:其中HelloWorldImplPortImpl.java就是需要自己实现的类,和方式一生成的实现类是一样的,只是名字不太一样。sun-jaxws.xml是生成webservice的代码。其中在web.xml中新增了一些配置信息。

 根据wsdl反向生成webservice服务端(3种方法)第17张

Sun-jaxws.xml内容如下:

 根据wsdl反向生成webservice服务端(3种方法)第18张

Web.xml配置信息如下:红框中是生成代码生成的webservice服务的配置信息。

 根据wsdl反向生成webservice服务端(3种方法)第19张

6. 然后把该项目发布到myeclipse自带的tomcat中,启动服务。

7. 在浏览器中输入wsdl地址:http://localhost:8080/helloworld/HelloWorldImplPort?wsdl,能正确打开,代表服务发布成功。此时可以实现HelloWorldImplPortImpl.java中的方法,然后通过第4步(如果有勾选Generate web service client的话)生成的客户端调用,也可以通过soapUI调用(方法自行百度)。

 根据wsdl反向生成webservice服务端(3种方法)第20张

注:方式二看着采用cxf的方式生成的,但是实际上可以通用,因为jax-ws是个标准,cxf有实现了jax-ws标准,所以,生成的代码用cxf发布为一个webservice服务也是可以的。我们这个例子是用javaee或者JAX-WS发布的。

3.使用apache cxf bin文件夹下的wsdl2java.bat生成

方式一的生成方式中,我们在soapUI中配置了apache cxf bin的路径,所以方式一本质就是采用wsdl2java.bat生成的。

其中在方式一的第五步,如下图:serverClient选项,都是wsdl2java.bat生成代码的指令。

 根据wsdl反向生成webservice服务端(3种方法)第21张

wsdl2java.bat用法

wsdl2java –p com.jdf –d F: -all xx.wsdl

-p 指定wsdl的命名空间,也就是要生成代码的包名

-d 指令要生成代码所在目录

-client 生成客户端测试web service的代码

-server 生成服务器启动web service代码

-impl 生成web service的实现代码,我们在方式一用的就是这个

-ant 生成build.xml文件

-all 生成所有开始端点代码。

使用步骤:

l 下载apache-cxf-2.2.8.jar,解压缩,如G: apache-cxf-2.2.8

l 设置环境变量

1. CXF_HOME= G: apache-cxf-2.2.8

2. 在path后面加上%CXF_HOME%/bin;

3. 在cmd命令中输入wsdl2java,如果有提示usage,表示配置成功。

4. 接下去就可以使用了

结尾

Axis2等其他webservice的逆向生成也是类似的。上面生成服务端方式,也适用于生成客户端,只要勾选client就行。

转:http://blog.csdn.net/jiandanfeng2/article/details/53439748

免责声明:文章转载自《根据wsdl反向生成webservice服务端(3种方法)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇UVM基础之---------uvm factory机制register@Value("#{}")与@Value("${}")的区别以及用法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口

webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲解SpringMVC+CXF环境下,怎么调用其他系统通过webService方式暴露出来的接口 ① 为避免怀疑同一个项目中调用本项目的接口,这里我新打开一个e...

Web Service学习之八:Soap消息详解

一、区别概念   WSDL是网络服务描述语言,是XML文档;它包含一系列描述某个web service的定义或者说是规则。尤其是定义了传输Sope消息的结构   Soap:简单对象访问协议,是交换数据的一种协议规范,是一种轻量的、简单的、基于XML的协议,它被设计成在WEB上交换结构化的和固化的信息,应用程序通过 HTTP 来交换信息。在Web Servi...

spring+cxf 开发webService(主要是记录遇到spring bean注入不进来的解决方法)

这里不介绍原理,只是记录自己spring+cxf的开发过程和遇到的问题 场景:第三方公司需要调用我们的业务系统,以xml报文的形式传递数据,之后我们解析报文存储到我们数据库生成业务单据; WebService的框架由多种,这里选cxf,与Spring的集成比较好; 直接看代码 1项目用的maven,首先添加依赖(这个依赖啊 ,教程引用几个的都有,这个看需要...

TravelPort官方API解读

TravelPort Ping通使用教程 Unit1 Lesson 1: 标签(空格分隔): 完成第1单元的三个课程后,您可以使用Travelport Universal API来提出服务请求并了解响应。 1、 下载和安装cxf 2、 需要从Travelport的UniversalAPI提供的wsdl和xsd文件生成Java代码 3、 首先要生成的...

WebService的讲解 和 CXF 的初步使用

1. 复习准备 1.1. Schema约束 几个重要知识: namespace 相当于schema文件的id targetNamespace属性 用来指定schema文件的namespace的值 xmlns属性 引入一个约束, 它的值是一个schema文件的namespace值 schemaLocation属性 用来指定引入的schema文件的位置...

C#调用WebService实例和开发(转)

1.1、Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。 XML:(Extensible Mark...