首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

CXF应用wsdl2java生成客户端super报错的解决

2012-11-08 
CXF使用wsdl2java生成客户端super报错的解决??? 长时间不写东西,慢慢的觉得脱离了学习的轨道。我要记住学习

CXF使用wsdl2java生成客户端super报错的解决

??? 长时间不写东西,慢慢的觉得脱离了学习的轨道。我要记住学习中遇到的每一点问题。

?

??? CXF很久没有用过,但却并不陌生,异常不可避免。这次是用CXF自带bat工具生成客户端测试代码。

?

??? 首先,下载CXF包,并将其目录下的bin添加到系统的path中。dos下运行wsdl2java 不会出现找不到命令的错误,表示配置成功。

?

??? 然后,进入到wsdl文件所在目录,执行 wsdl2java -client *.xml 命令,正常执行。

?

??? 再次,将wsdl文件同级目录下生成的客户端测试代码和wsdl文件都copy到工程中,编译时异常出现了。继承Service的类构造器有error,不能被正常编译。

?

??? 这是三个报错的构造函数(请认真看注释描述):

 //This constructor requires JAX-WS API 2.2. You will need to endorse the 2.2    //API jar or re-run wsdl2java with "-frontend jaxws21" to generate JAX-WS 2.1    //compliant code instead.    public IcpBusinessService(WebServiceFeature ... features) {        super(WSDL_LOCATION, SERVICE, features);    }    //This constructor requires JAX-WS API 2.2. You will need to endorse the 2.2    //API jar or re-run wsdl2java with "-frontend jaxws21" to generate JAX-WS 2.1    //compliant code instead.    public IcpBusinessService(URL wsdlLocation, WebServiceFeature ... features) {        super(wsdlLocation, SERVICE, features);    }    //This constructor requires JAX-WS API 2.2. You will need to endorse the 2.2    //API jar or re-run wsdl2java with "-frontend jaxws21" to generate JAX-WS 2.1    //compliant code instead.    public IcpBusinessService(URL wsdlLocation, QName serviceName, WebServiceFeature ... features) {        super(wsdlLocation, serviceName, features);    }
?

?

??? 原因请参见:http://cxf.apache.org/docs/23-migration-guide.html?? 官方说明。

CXF应用wsdl2java生成客户端super报错的解决

?

??? 怎么解决呢?? 经过研究发现,其不能正常编译通过是由于jax-ws2.2规约与java6冲突。 但程序又不能仅以java5来编译,故需要降低jax-ws规约版本,可以这样处理:? 执行命令

wsdl2java -frontend jaxws21 -client *.xml

?

??? 这样以jax-ws2.1生成的代码就可以在java6中编译通过并可执行。修改 *_Client.java,这个是测试的主方法,录入参数执行,即可调用远程服务.

?

?

?

??? 注:我将这两次生成的客户端代码进行比较,唯一的区别就是用后者生成的客户端代码将报错的3个构造函数移除了。也就是说,我们只需要将这3个出错的构造器删除就可以处理此异常。

?

??? over.

?

1 楼 sleepingxu 2012-05-08   刚好也遇到这个问题,谢谢分享 2 楼 nut1018 2012-06-08   恩,碰到了同样的问题,确实是这样的,cxf2.3.6有这个问题,2.1.5生成的没这个问题

热点排行