使用cmd根据WSDL网址生成java客户端代码的实现

 更新时间:2021年03月29日 10:51:28   作者:峥嵘life  
这篇文章主要介绍了使用cmd根据WSDL网址生成java客户端代码的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

windows下使用cmd命令提示符生成java webservice客户端代码,可以使用命令提示符直接生成客户端代码,直接导入到项目中,只需配置jdk即可,在jdk的bin文件夹下,按Shift并点击右键,选中“在此处打开命令窗口”

输入命令如下:

wsimport -keep -p com.demo.client -d D:\\(存放的地址) http://XX/Account?wsdl(wsdl地址)

命令参数说明:

-d:生成客户端执行类的class文件的存放目录(默认存放在C:\Users\Administrator\)

-s:生成客户端执行类的源文件的存放目录(默认存放在C:\Users\Administrator\)

-p:定义生成类的包名

图示:

上面代码是在D盘下生成java代码,-d代表的是生成class文件和java文件,图示:

如果把这里的-d改为-s,生成的只有java文件,图示:

文件里面包名都是我们可以指定的,如果没有指定,使用的就是根据WSDL文档里面的targetNamespace来命名。

共勉:这个时代会犒赏那些爱学习的人。

补充:利用wsdl地址生成java客户端调用类并实现动态配置的方法

前言:

有时,我们经常要和一些外部系统对接,如果是HTTP接口还好,直接用apache的HttpClient工具类调用即可。而如果对方系统是Webservice,则比较麻烦,本文主要讲解如何用对方的wsdl地址生成java客户端调用类并且动态配置访问地址并在java中使用

1,首先我们先要获取对方的wsdl地址,例如

http://xxxx/xxxx/xxxx.asmx?wsdl

2, 接着,在cxf官网上下载apache-cxf-3.2.5

2.1,将apache-cxf-3.2.5解压缩后安装在D:\\apache-cxf-3.2.5中,设置CXF_HOME环境变量为D:\\ apache-cxf-3.2.5

如下图所示:

2.2,运行cmd,执行命令wsdl2java,等待大概1秒钟,出现USAGE证明设置成功

2.3,用wsdl地址执行命令:其中-d代表输出路径,后面紧跟着路径,路径后面紧跟着地址,按回车键,生成成功!

3,生成成功后

由于wsdl是写死在生成的java类的注解中的,有时我们会使用多套环境进行测试,验证,而sit和uat环境的wsdl地址是不尽相同的。此时,我们需要动态配置wsdl的地址和命名空间的地址

@Component
public class DebitPushClient implements InitializingBean { 
 private static URL wsdlUrl; 
 private static String debitWsdlUrl; 
 private static String uri; 
 private static QName SERVICE_NAME; 
 public static HttpResult pushDebitData(String jsonData) {
  FinancialSharing ss = new FinancialSharing(wsdlUrl, SERVICE_NAME);
  return (HttpResult) WebServiceClientUtil.invokeWebServiceSoapAction(ss, new QName(uri, "FinancialSharingSoap12"), FinancialSharingSoap.class, "pushDebitData", jsonData);
 }
 
 /**
  * 初始化wsdl连接地址
  */
 private void initWsdlUrl() {
  URL url = null;
  try {
   wsdlUrl = new URL(debitWsdlUrl);
  } catch (MalformedURLException e) {
   java.util.logging.Logger.getLogger(FinancialSharing.class.getName())
     .log(java.util.logging.Level.INFO,
       "Can not initialize the default wsdl from {}",
       debitWsdlUrl);
  }
 }
 
 /**
  * 从配置文件中读取wsdl地址
  * @param debitWsdlUrl 地址
  */
 @Value("${my.dfdk.wsdl.url:http://xxx.xxx.asmx?wsdl}")
 public void setDebitWsdlUrl(String debitWsdlUrl) {
  DebitPushClient.debitWsdlUrl = debitWsdlUrl;
 }
 
 /**
  * 从配置文件中读取命名空间地址
  * @param uri 命名空间地址
  */
 @Value("${my.dfdk.wsdl.namespace.uri:http://tempuri.org/}")
 public void setUri(String uri) {
  DebitPushClient.uri = uri;
 }
 
 /**
  * 初始化wsdl
  * @throws Exception
  */
 @Override
 public void afterPropertiesSet() throws Exception {
  initWsdlUrl();
  SERVICE_NAME = new QName(uri, "FinancialSharing");
 }
}

4,客户端调用,调用成功后,即可获取正确的响应结果,不需要再将xml转成java对象

这篇文章,只是简单介绍了用wsdl地址生成java客户端调用代码的一种方法,除此之外,还可以用maven plugin

cxf-codegen-plugin

生成

<build>
  <finalName>cxf-date</finalName>
 
  <plugins>
   <plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>${cxf.version}</version>
    <executions>
     <execution>
      <id>generate-sources</id>
      <phase>generate-sources</phase>
      <configuration>
       <sourceRoot>src/main/resources/cxf</sourceRoot>
       <wsdlOptions>
        <wsdlOption>
         <wsdl>http://localhost:8080/cxf-date/services/BookService?wsdl</wsdl>
         <frontEnd>jaxws21</frontEnd>
         <faultSerialVersionUID>1</faultSerialVersionUID>
        </wsdlOption>
       </wsdlOptions>
      </configuration>
      <goals>
       <goal>wsdl2java</goal>
      </goals>
     </execution>
    </executions>
   </plugin>
  </plugins>
 </build>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • 详解Java单例模式中的饿汉和懒汉模式

    详解Java单例模式中的饿汉和懒汉模式

    这篇文章主要介绍了详解Java单例模式中的饿汉和懒汉模式,单例模式中有两种模式一种是饿汉模式,一种是懒汉模式,那么他们有什么区别呢,需要的朋友可以参考下本文
    2023-04-04
  • 详解Java实现多线程的三种方式

    详解Java实现多线程的三种方式

    线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。本文总结了Java多线程是三种实现方式,需要的可以参考一下
    2022-03-03
  • 一篇文章带你入门Java变量及整形

    一篇文章带你入门Java变量及整形

    这篇文章主要介绍了简单了解JAVA变量类型及代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-08-08
  • jpa使用注解生成表时无外键问题及解决

    jpa使用注解生成表时无外键问题及解决

    这篇文章主要介绍了jpa使用注解生成表时无外键问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • 最新jsonwebtoken-jwt 0.12.3 基本使用小结

    最新jsonwebtoken-jwt 0.12.3 基本使用小结

    这篇文章主要介绍了最新jsonwebtoken-jwt 0.12.3 基本使用小结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-12-12
  • Java异常处理机制throws举例详解

    Java异常处理机制throws举例详解

    这篇文章主要介绍了Java中异常处理机制,包括finally的使用、异步处理的方式(throws)、以及手动抛出异常,finally用于确保资源释放,throws用于声明方法可能抛出的异常,由调用者处理,手动抛出异常则是在特定条件下主动抛出异常对象,需要的朋友可以参考下
    2024-11-11
  • 基于Java实现经典蜘蛛纸牌游戏

    基于Java实现经典蜘蛛纸牌游戏

    《蜘蛛纸牌》(Ancient Spider) 是由Oberon Games开发的一款休闲益智类游戏。本文将利用Java语言实现这一经典游戏,需要的可以参考一下
    2022-05-05
  • idea使用Vim的技巧大全分享

    idea使用Vim的技巧大全分享

    vim是一个高度可配置的文本编辑器,非常稳定,可以高效的创建任何文本、持久的、多级撤销树、支持数百种变成语言和格式、与许多工具集成,本文给大家分享了idea使用Vim的技巧大全,需要的朋友可以参考下
    2024-05-05
  • 使用MQ消息队列的优缺点详解

    使用MQ消息队列的优缺点详解

    这篇文章主要介绍了使用MQ消息队列的优缺点详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Mybatis拦截器实现一种百万级轻量分表方案

    Mybatis拦截器实现一种百万级轻量分表方案

    这篇文章主要介绍了Mybatis拦截器实现一种百万级轻量分表方案,需要的朋友可以参考下
    2024-02-02

最新评论