JAVA如何调用wsdl过程详解

作者:徐小木L 时间:2021-08-12 22:00:18 

前提:① 已经提供了一个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.zszsjsjy.com/services/resource?wsdl
重新生成来解决。

3、接口调用测试时报错,Exception in thread "main" org.apache.cxf.service.factory.ServiceConstructionException

原因是生成接口java类,namespace路径是它原来默认的,而我放进项目时类的路径已经是现在的了。

解决办法:需要 自定义-p路径 重新生成:


wsdl2java -frontend jaxws21 -encoding utf-8 -p cn.teacheredu.app.projectconfigcenter.proj.module.screen.tlogin.zswebservice -d D:\javalib\cn http://m.zszsjsjy.com/services/resource?wsdl

来源:https://www.cnblogs.com/xuxiaomu/p/9537626.html

标签:java,调用,wsdl
0
投稿

猜你喜欢

  • Android RecyclerView上拉加载和下拉刷新

    2023-05-09 14:30:26
  • Android开发之基于DialogFragment创建对话框的方法示例

    2023-10-03 21:17:12
  • C#日期控件datetimepicker保存空值的三种方法

    2021-11-14 19:22:38
  • Java经典面试题最全汇总208道(五)

    2023-11-10 07:06:46
  • Java程序测试上传Maven工程代码示例解析

    2022-01-21 18:43:25
  • Go Java算法之累加数示例详解

    2023-03-16 00:43:31
  • Android仿微信键盘切换效果

    2022-05-01 08:06:41
  • Java特性队列和栈的堵塞原理解析

    2023-10-13 14:15:55
  • Java中将File转化为MultipartFile的操作

    2021-07-05 21:25:32
  • 浅谈Java字符串比较的三种方法

    2023-05-13 12:26:51
  • WPF基于物理像素绘制图形

    2022-01-06 20:25:18
  • 详谈OnTouchListener与OnGestureListener的区别

    2023-11-13 14:21:24
  • c++ 虚继承,多继承相关总结

    2022-11-19 12:09:35
  • C#实现在购物车系统中生成不重复订单号的方法

    2022-06-21 04:03:09
  • Android Loop机制中Looper与handler详细分析

    2023-01-13 04:40:56
  • Java实现经典游戏复杂迷宫

    2021-05-29 22:33:34
  • C#中[]的几种用法示例代码

    2022-03-20 05:50:46
  • 一文了解自定义MVC框架实现

    2023-01-11 00:15:10
  • Android 用HttpURLConnection访问网络的方法

    2023-05-18 17:33:01
  • Java并发编程之浅谈ReentrantLock

    2022-08-25 10:46:02
  • asp之家 软件编程 m.aspxhome.com