微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

webservice

在最近的项目中需要做一个webservice的客户端,为了方便,我使用cxf工具自动生成客户端。

1,首先,我从官网上下载了cxf的工具包。解压之后,从cmd进入cxf的bin目录,运行以下命令

            wsdl2java wsdl地址

结果报路径找不到,经过研究发现,是JDK版本问题,CXF生成工具需要JDK1.5的运行环境,而我的是JDK1.7。更换JDK版本后重新执行以上命令成功的生成了客户端代码

2,将生成代码放到工程下,结果发现super相关代码编译报错。开始以为是缺包,结果试着添加了很多的包也没能好使。

 JAVA代码如下:

  1. //This constructor requires JAX-WS API 2.2. You will need to endorse the 2.2   
  2.    //API jar or re-run wsdl2java with "-frontend jaxws21" to generate JAX-WS 2.1   
  3.    //compliant code instead.   
  4.    public IcpBusinessService(WebServiceFeature ... features) {   
  5.        super(WSDL_LOCATION, SERVICE, features);   
  6.    }   
  7.   
  8.    //This constructor requires JAX-WS API 2.2. You will need to endorse the 2.2   
  9.    //API jar or re-run wsdl2java with "-frontend jaxws21" to generate JAX-WS 2.1   
  10.    //compliant code instead.   
  11.    public IcpBusinessService(URL wsdlLocation, WebServiceFeature ... features) {   
  12.        super(wsdlLocation, QName serviceName, WebServiceFeature ... features) {   
  13.        super(wsdlLocation, serviceName, features);   
  14.     
 
 

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

wsdl2java -frontend jaxws21 -client *.xml

 

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

 

 

 

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

在最近的项目中需要做一个webservice的客户端,为了方便,我使用cxf工具自动生成客户端。

1,首先,我从官网上下载了cxf的工具包。解压之后,从cmd进入cxf的bin目录,运行以下命令

            wsdl2java wsdl地址

结果报路径找不到,经过研究发现,是JDK版本问题,CXF生成工具需要JDK1.5的运行环境,而我的是JDK1.7。更换JDK版本后重新执行以上命令成功的生成了客户端代码

2,将生成代码放到工程下,结果发现super相关代码编译报错。开始以为是缺包,结果试着添加了很多的包也没能好使。

 JAVA代码如下:

  1. //This constructor requires JAX-WS API 2.2. You will need to endorse the 2.2   
  2.    //API jar or re-run wsdl2java with "-frontend jaxws21" to generate JAX-WS 2.1   
  3.    //compliant code instead.   
  4.    public IcpBusinessService(WebServiceFeature ... features) {   
  5.        super(WSDL_LOCATION, features);   
  6.    }   
  7.   
  8.    //This constructor requires JAX-WS API 2.2. You will need to endorse the 2.2   
  9.    //API jar or re-run wsdl2java with "-frontend jaxws21" to generate JAX-WS 2.1   
  10.    //compliant code instead.   
  11.    public IcpBusinessService(URL wsdlLocation, WebServiceFeature ... features) {   
  12.        super(wsdlLocation, WebServiceFeature ... features) {   
  13.        super(wsdlLocation, features);   
  14.     
 
 

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

wsdl2java -frontend jaxws21 -client *.xml

 

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

 

 

 

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐