当前位置: 首页 > 编程笔记 >

JAVA如何调用wsdl过程详解

邵飞白
2023-03-14
本文向大家介绍JAVA如何调用wsdl过程详解,包括了JAVA如何调用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.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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Java实现调用MySQL存储过程详解,包括了Java实现调用MySQL存储过程详解的使用技巧和注意事项,需要的朋友参考一下 前言 存储过程(Stored Procedure)是存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 Java调用MySQL的存储过程,需要用JDBC连接,环境eclipse 首先查

  • 问题内容: 如何正确拨打电话?(如果可能,不使用PL / SQL) 不起作用,因为DESEncrypt已过载: 有没有一种方法可以选择DESENCRYPT的一种实现(可能是VARCHAR2变体)来避免此错误? 问题答案: 在这里,只需提供参数名称就可以让它知道要使用哪个重载! 退货 M5锟w5Z 请注意,您的密钥必须至少为8个字节: ORA-28234:密钥长度太短ORA-06512:在“ SYS

  • 问题内容: 我有一个plsql程序 我尝试在Java代码中调用它。我已经使用其他过程执行了所有参数均为VARCHAR类型的过程,但是这里所有参数都是“ bd_tb_struct” 我也有一个带有此Comment的Java类。“数据库中对应类型的类。(bd_tb_struct)” 有人可以解释一下我该如何称呼我的程序吗? 问题答案: Oracle安装程序 : Java SQLData类 : 从Jav

  • 本文向大家介绍Java通过BCrypt加密过程详解,包括了Java通过BCrypt加密过程详解的使用技巧和注意事项,需要的朋友参考一下 一、概述 在用户模块,对于用户密码的保护,通常都会进行加密。我们通常对密码进行加密,然后存放在数据库中,在用户进行登录的时候,将其输入的密码进行加密然后与数据库中存放的密文进行比较,以验证用户密码是否正确。 目前,MD5和BCrypt比较流行。相对来说,BCryp

  • 问题内容: 我需要从PowerShell调用Java程序(jar文件)。以下代码有效: 但是我需要在一个过程中运行该应用程序(使用)。 我正在尝试以下成功: 错误: 知道如何解决吗? 问题答案: 您将需要为Powershell使用以下格式: 或者您可以使用的其他选项是Start-job: