`
ahaoo0712
  • 浏览: 17154 次
  • 性别: Icon_minigender_1
  • 来自: 襄樊
社区版块
存档分类
最新评论

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   官方说明。

 

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

wsdl2java -frontend jaxws21 -client *.xml

 

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

 

 

 

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

 

    over.

 

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

相关推荐

Global site tag (gtag.js) - Google Analytics