`

web service开发时,wsdl2java 客户端代码的生成

 
阅读更多

在用到web service时,如果是调用自己开发的web service还好,可以有一个方法的接口或参数对象实体类什么的,但如果是调用第三方的服务,除了得到web service服务地址的wsdl文档外,没有任何实质性编码的东西,写原生调用太麻烦,这时就需要自己写一个方法的接口类。

这个,目前已经有比较成熟的工具,可以自动生成,下面作一下简单的介绍。

 

apache的wsdl2java工具,目前貌似CXF和axis各有一套,使用方式大同小异,但生成的代码会有所区别,这时说的是CXF提供的wsdl2java工具。

 

wsdl2java用法:

wsdl2java -p com -d src -all  aa.wsdl

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

-d  指定要产生代码所在目录

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

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

-impl 生成web service的实现代码

-ant  生成build.xml文件

-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.

详细用法见:http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html

 

 

一开始使用了CXF的这套工具,发现不是很方便,毕竟依赖CXF提供的工具jar包,个人不是很喜欢用。

后来发现JDK居然也自带了对web service生成java代码的功能,貌似1.6版本开始的,试用后发现效果十分不错,果断投入它的怀抱。下面作下简单的介绍,以备忘。

 

打开jdk下的bin目录 看下能否找到"wsimport.exe"这个文件

一般情况下都会有

如果没有则说明你的JDK不支持这个功能

然后在DOS窗口下输入wsimport 敲回车

如果提示错误的话 说明你的JDK环境变量还没有配好

一句话总结,如果你在dos窗口下输入wsimport正常,就可以

 

如果OK的话 输入以下命令就可以将wsdl文件生成java文件了

wsimport http://127.0.0.1/TicketMobile/services/Cococ?wsdl  -keep -p com.llg.ws2 -s g:/ws

 

参数说明

wsimport 这个是必须的 该工具的名称

http://127.0.0.1/TicketMobile/services/Cococ?wsdl  wsdl文件

-keep  是否生成源文件

-p com.llg.ws2  生成后的java包名

-s g:/ws    生成后放哪个目录

 

 

但是前几天,在对一个第三方提供的web service使用该工具生成java代码的时候,居然出错了,网上查找后终于找到原因。

 

使用cxf wsdl2java或javax wsimport工具的时候,可能会遇到关于生成的Response类文件名冲突的问题 

 

 

Console代码  

  1. WSDLToJava Error: Thrown by JAXB : A class/interface with the same name "***" is already in use. Use a class customization to resolve this conflict.  

 

目前可选择的方案: 

apache的wsdl2java工具,使用-autoNameResolution自动处理 

wsdl2java -autoNameResolution http://hello.joy2everyone.com/yourWebService?wsdl 

 

 

JDK自带的工具

wsimport -p com.test.client -keep http://hello.joy2everyone.com/yourWebService?wsdl -B-XautoNameResolution 

 

2.如果web service是己方开发的,可以修改代码,使用自定义bindings,详细可看sun webservice文档 

 

例如: 

 

 

Java代码  

  1. public interface ValidateCCService  
  2.     @WebMethod  
  3.     @WebResult(name = "response")  
  4.     public ValidateCCResponse validateCC(@WebParam(name = "request")ValidateCCRequest request);  

 

这个情况下定义的方法名,如果使用工具生成客户端代码,很可能存在Response冲突,因为定义的wsdl中会有一个关于接口方法的message 

 

<wsdl:message name="validateCCResponse"> 

</wsdl:message> 

 

方法名定义的message与接口定义返回的ValidateCCResponse,在工具生成客户端代码时就会产生命名冲突。 

 

但是通过更改接口方法名为: 

 

 

Java代码  

  1. public interface ValidateCCService  
  2.     @WebMethod  
  3.     @WebResult(name = "response")  
  4.     public ValidateCCResponse validate(@WebParam(name = "request")ValidateCCRequest request);  

 

即可解决该冲突, 

 

 

 

分享到:
评论

相关推荐

    wsdl2java 客户端的自动生成工具

    在Java WebService开发中,`Wsdl2Java`是一个非常实用的工具,主要用于根据WSDL(Web Services Description Language)文件自动生成对应的Java客户端代码。这极大地简化了开发过程,使得开发者可以快速地与远程服务...

    WSDL2Java--根据wsdl生成Java客户端工具

    而`WSDL2Java`工具正是基于这样的需求应运而生,它能够将一个WSDL文件转换为Java客户端代码,让开发者可以轻松地调用远程Web服务。 ### WSDL2Java的工作原理 `WSDL2Java`工具主要遵循以下步骤: 1. **解析WSDL...

    Eclipse中用wsdl生成java客户端

    Eclipse中用wsdl生成java客户端 ...Eclipse提供了一个功能强大、功能丰富的开发环境,允许开发者快速生成Java客户端代码。同时,Eclipse还提供了其他许多功能,例如调试、测试等,帮助开发者提高开发效率,提高生产力。

    xfire根据WSDL生成客户端代码

    使用XFire根据WSDL生成客户端代码,可以大大简化开发过程,因为它自动生成了与服务接口对应的Java类和代理。以下是具体步骤: 1. **安装和配置XFire**:首先,确保已经下载并安装了XFire库。你可以通过Maven或...

    使MyEclipse调用Axis的wsdl2java 通过wsdl生成客户端

    当我们有一个WSDL文件时,可以通过Axis工具将其转换为Java客户端代码,这样我们就可以在Java应用程序中轻松地调用这些Web服务。 接下来,我们来看看如何在MyEclipse中配置和使用Axis: 1. 安装Axis插件:MyEclipse...

    Eclipse中用wsdl生成java客户端.pdf

    在开发基于Web服务的Java应用程序时,经常需要从WSDL(Web Service Description Language)文件生成对应的Java客户端代码,以便能够调用远程Web服务。在Eclipse这个强大的Java集成开发环境中,这一过程变得相当简单...

    wsdl2java 生成wsdljava客户端所需要的包

    总的来说,`wsdl2java`工具为Java开发者提供了便捷的方式,从WSDL文件中自动生成客户端代码,大大降低了与Web服务交互的复杂性。如果你在使用过程中遇到问题,可以参考博客或其他在线资源,了解更详细的用法和常见...

    WSDL生成Web Service java客户端

    2. **使用工具生成Java客户端代码**:在Java中,我们可以使用Apache CXF、 Axis2 或 JAX-WS等库来从WSDL文件自动生成客户端代码。这些库提供命令行工具或IDE插件,例如使用Apache CXF的`wsdl2java`命令,可以将WSDL...

    wsdl生成服务的客户端调用代码

    总结来说,"wsdl生成服务的客户端调用代码"涉及到利用WSDL文件自动生成与Web服务交互所需的客户端代码,这样开发者就可以在自己的应用中方便地调用这些服务,而无需手动编写复杂的网络通信逻辑。不同的编程语言和...

    Eclipse根据wsdl文件逆向生成webservice客户端项目源码

    2. **创建Web服务客户端项目**:在导入WSDL后,Eclipse会提示你创建一个新的Java项目,用于存放生成的客户端代码。输入项目名称并选择目标位置,然后点击“Finish”。 3. **生成源码**:Eclipse会自动生成客户端所...

    axis生成wsdl的JAVA客户端服务接口

    标题中的“axis生成wsdl的JAVA客户端服务接口”是指使用Apache Axis工具来从WSDL(Web Service Definition Language)文件生成Java客户端代码,以便与Web服务进行交互。Apache Axis是Apache软件基金会开发的一个开源...

    axis2 1.6.2 生产wsdl客户端代码

    在 Axis2 中,我们可以使用WSDL2Java工具从一个给定的WSDL文件自动生成Java客户端代码。这个过程包括以下步骤: 1. **下载与安装**: 首先,你需要下载Axis2 1.6.2的发行版,这里提供的是"axis2-1.6.2"的压缩包。...

    把wsdl文件或地址转化成java代码工具

    这样,开发者无需手动编写调用Web服务的Java代码,只需导入WSDL文件,MyEclipse就能自动生成相应的Java客户端 stub类,这些类提供了与Web服务交互的方法。 具体步骤如下: 1. 打开MyEclipse,创建一个新的Web项目...

    wsdl2java生成工具

    1. **客户端代码生成**:当您有一个WSDL文件,该工具可以生成调用远程Web服务所需的Java客户端代码。这包括代理类、数据绑定类和配置文件,使得客户端应用能够方便地调用服务。 2. **服务端代码生成**:同样,WSDL2...

    axis2根据wsdl生成客户端代码

    在 Axis2 中,我们可以使用`org.apache.axis.wsdl.WSDL2Java`工具,根据WSDL文件自动生成与服务交互所需的Java客户端代码,这极大地简化了开发者的工作,无需手动编写复杂的SOAP消息构造代码。 首先,你需要确保...

    WebService的WSDL文件生成Java代码工具

    在本话题中,我们将深入探讨如何利用WSDL文件生成Java代码,以便于开发和调用WebService。 WSDL文件是WebService的核心,它定义了服务的接口、消息格式、操作和地址等信息。WSDL是XML格式的,可以被工具解析并生成...

    wsdl2java命令使用

    总之,`wsdl2java`是Apache Axis提供的重要工具,它极大地简化了Web服务开发中的代码生成环节。理解并熟练掌握其使用方法,能有效提高开发效率,同时,了解Axis的相关知识对于理解Web服务原理及实践具有重要意义。

    wsdl2java工具

    `wsdl2java`是Apache CXF框架提供的一款命令行工具,它能够根据WSDL文件自动生成Java客户端和服务端代码,大大简化了Web服务的开发流程。这个工具支持两种方式来获取WSDL:文件路径和URL。 ### 使用WSDL2Java工具 ...

    webserice客户端代码(java)生成,wsdl本地文件或wsdl url均可以生成(绝对可用)

    在本示例中,我们将探讨如何使用WSDL文件生成Java客户端代码,这通常是通过工具如Apache CXF、Axis2等完成的。 标题提到的"webserice客户端代码(java)生成"指的是使用Java编程语言创建一个能够调用Web服务的客户端...

    WEB Service 客户端代码生成器(Axis)

    一般我们都是在命令行下用WSDL2Java工具生成WEB Service 客户端代码,繁琐的Java环境变量,以及命令行参数很容易出错,为了提高效率,我用Swing做了一个图形界面生成器,输入WSDL地址(可以是本地路径或远程地址)...

Global site tag (gtag.js) - Google Analytics