Java调用第三方WSDL接口:wsdl2java工具使用与问题解决
在Java开发中,调用第三方WSDL接口是一个常见的任务,特别是在需要与Web服务交互的场景下。本文将详细介绍如何使用Apache CXF工具包通过wsdl2java工具生成本地类来实现这一功能,同时还会提及在实际操作过程中遇到的一些问题和解决策略。 首先,确保你拥有一个可用的Java开发环境,包括JDK 1.6或更高版本(尽管1.6版本可能存在问题),以及Apache CXF的最新版本(如3.1.7)。将CXF的bin目录添加到系统PATH中以便执行wsdl2java命令。 下面是使用wsdl2java的主要步骤: 1. 安装并配置环境:确保JDK已正确安装,且版本适配CXF需求。对于JDK 1.6用户,可能会遇到因CXF jar包与旧版JDK兼容性问题,这时需要考虑降级CXF版本或升级JDK至1.7以上。 2. 下载和解压Apache CXF:从官方下载页面(http://cxf.apache.org/download.html)获取最新版本,解压并设置CXF_HOME环境变量。 3. 验证环境:在命令行中输入`wsdl2java-help`,如果返回预期的提示,说明环境配置已完成。 4. 执行wsdl2java命令:根据提供的WSDL地址(如`http://m.zsjsjy.com/services/resource?wsdl`),使用以下命令生成Java类: ``` wsdl2java -encoding utf-8 -d D:\javalib\we http://m.zsjsjy.com/services/resource?wsdl ``` 这个命令将生成UTF-8编码的Java类,并将其保存在指定的目录中。 在生成本地类的过程中,可能会遇到以下问题: 1. **CXF与JDK版本冲突**:如果你的JDK版本过低,可能会与CXF的依赖包不兼容。为解决这个问题,可以尝试降级CXF版本到与JDK兼容的版本(例如2.6.12),或者在JDK的endorsed目录下添加冲突的jar包(如jaxb相关jar)。 2. **构造函数报错**:即使生成的Java文件导入项目后,可能会遇到构造函数错误。这通常是因为缺少jaxws2.2的支持。解决方法是确保你的项目依赖包含了正确的jaxws API版本,或者在构建时针对特定版本进行配置。 总结来说,使用Apache CXF的wsdl2java工具调用第三方WSDL接口需要对环境设置、命令行操作和依赖管理有一定了解。在遇到问题时,通过查阅文档、对比版本和调整配置,通常能够找到合适的解决方案。对于新手开发者,理解这些基本步骤和常见问题处理方法,将有助于提高调用第三方接口的效率和成功率。
前提:① 已经提供了一个wsdl接口② 该接口能正常调用
总体分为两种方式:
1.使用cxf的wsdl2java工具生成本地类(使用方式就是本地类的使用)。
2.调用远程的web service方法:创建client来远程调用接口。
因为第二种方式,需要熟悉wsdl,没深入了解不太好操作,主要说下第一种方式。
使用cxf的wsdl2java工具生成本地类主要步骤如下:
1、安装JDK环境(jdk版本是1.6的话,后续会报错jdk6最高只支持ws2.1规范版本)
2、下载apache-cxf发布包,下载CXF:http://cxf.apache.org/download.html 目前最新版本为3.1.7,解压发布包,设置CXF_HOME,并添加%CXF_HOME %/bin到path环境变量。
3、CMD命令行输入wsdl2java -help,有正常提示说明环境已经正确配置。
4、CMD运行命令 : wsdl2java -encoding utf-8 -d D:\javalib\web http://m.zsjsjy.com/services/resource?wsdl
(wsdl 的路径)
-encoding表示生成的Java文件编码格式为utf8,-d表示代码生成路径为D:\javalib\we。运行后会在运行命令的当前路径生成以供使用的类
5、把生成的类导入项目。一般服务都叫XXXService,这是我们最为关心的接口文件
上述过程中的遇到的问题:
1、
因为jdk是1.6版本的,导致下载的apache-cxf发布包解压后使用报错,这是cxf和jdk的jar包有冲突引起的!
就下载了老版本的apache-cxf-2.6.12.zip ,查了一些资料,保险起见接着把jdk换成了1.7,
如果还报错 就在jdk1.7文件夹下的jre下的lib文件下创建一个endorsed文件夹(D:\java\jdk1.7.0_16\jre\lib\endorsed),
把apache-cxf中jaxb对应的三个2.2jar包复制到endorsed中,最后成功生产本地java类。
2、
成功生成java文件导入项目后,调整完java中报错的包文件,结果serviece类中还是有构造函数报错,注释说需要jaxws2.2来重新生成才可。
查了下资料说其不能正常编译通过是由于jax-ws2.2规约与java6冲突。 但程序又不能仅以java5来编译,故需要降低jax-ws规约版本。
解决办法:执行命令: wsdl2java -frontend jaxws21 -d D:\javalib\cn http://m.zsjsjy.com/services/resource?wsdl
重新生成来解决。
3、
接口调用测试时报错,Exception in thread "main" org.apache.cxf.service.factory.ServiceConstructionException
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构