前言

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

生成方式

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

l 使用soapUI生成

l 使用myeclipse的web service生成

l 使用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全局变量是第三种生成方式要用的。

环境

l JDK1.6

l JavaEE6

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

1.使用soapUI生成

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

2. 新建一个项目

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

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

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

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

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

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

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

2.使用myeclipse的web service Project生成

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

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

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

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

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

Sun-jaxws.xml内容如下:

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

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

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

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

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

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

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

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种方法)的更多相关文章

  1. C#根据WSDL文件生成WebService服务端代码

    转自:http://www.cnblogs.com/liyi93/archive/2012/01/30/2332320.html 虽然现在已经进入了.NET FrameWork 4.0的时代,WebS ...

  2. C# 利用VS自带的WSDL工具生成WebService服务类

    C# 利用VS自带的WSDL工具生成WebService服务类   WebService有两种使用方式,一种是直接通过添加服务引用,另一种则是通过WSDL生成. 添加服务引用大家基本都用过,这里就不讲 ...

  3. 记一次在Eclipse中用Axis生成webservice服务端的过程中出现的问题

    问题一. Unable to find config file.  Creating new servlet engine config file: /WEB-INF/server-config.ws ...

  4. axis2框架用wsdl文件生成的服务端MessageReceiveInOut文件注意事项

    在用axis2生成服务端文件和客户端文件,当客户端文件调用服务端文件时,都是通过wsdl文件生成的 配置文件进行相互的调用. 在一开始做开发测试的时候,通过soapUI进行调用接口的时候,可以调用成功 ...

  5. axis2生成webservice服务端返回String[]和String[][]一维数组和二维数组解析

    环境:用axis2生成服务端,用aixs做客户端 1:直接返回String[]: public String[] testArr(String name) { String[] ret=new Str ...

  6. C# 利用VS自带的WSDL工具生成WebService服务类(转载)

    WebService有两种使用方式,一种是直接通过添加服务引用,另一种则是通过WSDL生成. 添加服务引用大家基本都用过,这里就不讲解了. 那么,既然有直接引用的方式,为什么还要通过WSDL生成呢? ...

  7. MyEclipse创建WebService服务端和客户端

    1.新建立一个javaWeb项目,一个java类,如图: 2.接下来我们就要将项目中的TestService的这个类生成WebService服务端,选择new Web Service,如图: Next ...

  8. webservice 服务端例子+客户端例子+CXF整合spring服务端测试+生成wsdl文件 +cxf客户端代码自动生成

    首先到CXF官网及spring官网下载相关jar架包,这个不多说.webservice是干嘛用的也不多说. 入门例子 模拟新增一个用户,并返回新增结果,成功还是失败. 大概的目录如上,很简单. Res ...

  9. webservice快速入门-使用wsimport生成ws服务端(二)

    上个例子演示的是在当前项目下发布的Webservice Server,而实际应用中和Client是分离的,本文介绍两种客户端开发方式: 1.导出WebService服务端服务接口到jar包,客户端引入 ...

随机推荐

  1. Python函数高级

    函数对象 在面向对象编程中 一切皆对象 函数在python中是第一类对象 函数可以这么用 可以被引用 def func(): print('hello world !') ​ f=func f() 可 ...

  2. 前端,基础选择器,嵌套关系.display属性,盒模型

    基础选择器 1.统配选择器 控制html,body及body内跟显示相关的标签 *{ width:80px; height:80px; background-color:red; } 2.类选择器 以 ...

  3. Luogu 2216 [HAOI2007]理想的正方形 (单调队列优化)

    题意: 给出一个 N×M 的矩阵,以及一个数值 K ,求在给定的矩阵中取出一个 K×K 的矩阵其中最大值减去最小值的最小值. 细节: 没有细节来发暴力走天下,20分也是分啊~~~ QAQ. 分析: 感 ...

  4. [android开发篇]权限分类:正常权限和危险权限

    https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous 系统权限 本文内容 安全架构 ...

  5. DefaultActionInvocation 源码

    /** * Copyright 2002-2006,2009 The Apache Software Foundation. * * Licensed under the Apache License ...

  6. 【UML】UML图的发展和体系结构

    导读:上次给徒弟验收UML的项目,在验收的时候提出了很多问题,徒弟也暴露了一些问题.说好我们一起总结成长的,由于最近的事儿,比较忙,所以现在进行总结.上次会议中说到要用门卫思维去总结这部分的知识点,用 ...

  7. 【Luogu】P1602Sramoc问题(堆)

    题目链接 很巧妙的想法.一开始将1~k-1加入堆中,然后每次从堆里取出一个最小的,判断是不是答案,如果不是,那么就枚举新数的末一位加上. 代码如下 #include<cstdio> #in ...

  8. Codeforces Round #360 (Div. 2)——C. NP-Hard Problem(BFS染色判二分图)

    C. NP-Hard Problem time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  9. BZOJ 1007 [HNOI2008]水平可见直线 ——半平面交 凸包

    发现需要求一个下凸的半平面上有几个交点. 然后我们把它变成凸包的问题. 好写.好调.还没有精度误差. #include <map> #include <ctime> #incl ...

  10. bzoj1610 [Usaco2008 Feb]Line连线游戏 几何+暴力

    Description Farmer John最近发明了一个游戏,来考验自命不凡的贝茜.游戏开始的时 候,FJ会给贝茜一块画着N (2 <= N <= 200)个不重合的点的木板,其中第i ...