java webservice wsdl2java error

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


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


目前可选择的方案:
1.使用-autoNameResolution自动处理
wsdl2java -autoNameResolution http://hello.joy2everyone.com/yourWebService?wsdl

or

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

我所经历的默认环境下是在同文件名上增加数字编号以命名Response文件,
**Response.java, **Response2.java,这种情况不是很好

2.使用自定义bindings,详细可看[url=http://java.sun.com/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html]sun webservice文档[/url]

我发现,其实可以避免这个冲突的发生,

例如:


public interface ValidateCCService
@WebMethod
@WebResult(name = "response")
public ValidateCCResponse validateCC(@WebParam(name = "request")ValidateCCRequest request);


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

<wsdl:message name="validateCCResponse">
</wsdl:message>

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

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


public interface ValidateCCService
@WebMethod
@WebResult(name = "response")
public ValidateCCResponse validate(@WebParam(name = "request")ValidateCCRequest request);


即可解决该冲突,

以上为自己的经验,在此分享下,做下笔记,也希望对大家有帮助,如有错误或更好打方法的,大家分享下!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值