使用wsimport命令将wsdl文件生成服务端以及客户端

article/2025/10/15 12:58:45

使用wsimport命令将wsdl文件生成服务端以及客户端

  • 背景介绍
  • WSDL文件介绍
  • APACHE.CXF介绍
  • soapui介绍
  • 自身系统作为客户端
    • 流程
      • 验证WSDL文件有效
      • 命令生成java代码
      • 将代码存放到系统指定位置
      • Apache CXF引用
      • 代码整合
  • 自身作为webService服务端
    • 流程
      • 发布webService服务
  • 总结

背景介绍

最近在做一项目,内部系统之间的调用通过ESB系统进行连接的,由于需要作为客户端对接第三方服务端系统,也需要自己系统作为服务端让其他系统调用,所以所有的服务端都需要将服务(接口)发布到ESB上。为了更方便客户端的调用,根据接口文档生成WSDL文件,让其客户端能快速的开发使用。把使用后的流程以及使用总结给与大家分享。

WSDL文件介绍

WSDL 文档仅仅是一个简单的XML文档。它包含一系列描述某个 web service 的定义。

APACHE.CXF介绍

Apache CXF = Celtix + XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。Apache CXF已经是一个正式的Apache顶级项目。

soapui介绍

soapui提供一个工具通过soap/http来检查,调用,实现web service和web service的功能/负载/符合性测试。该工具既可作为一个桌面应用软件使用,也可利用插件集成到Eclipse,maven2.X,netbeans 和intellij中使用。我们这里是使用软件进行单独测试的,安装部署以及使用情况请自行查阅资料。

自身系统作为客户端

当我们作为客户端,去调用第三方服务端时,先拿到wsdl文件,可以使用soapUI来检查是否wsdl文件正确性,正确无误可进行后续操作。

流程

在这里插入图片描述

验证WSDL文件有效

使用soapui可以进行验证
在这里插入图片描述

命令生成java代码

wsimport的用法
wsimport [options] <WSDL_URI>
比较常用的[options]有:

  1. -d
    在指定的目录生成class文件
  2. -clientjar
    在当前目录生成jar文件,结合-d 可以在指定的目录生成jar文件
  3. -s
    在指定的目录生成java源文件
  4. -p
    指定生成文件的包结构
  5. -keep
    在生成class文件,或者jar包时,同时保留java源文件
    例如:wsimport -s D:\temp -p com.yyy xxx.wsdl
    yyy最好与你生成代码后存放的服务包名一致,xxx为你的wsdl文件名称。
    在这里插入图片描述

将代码存放到系统指定位置

在这里插入图片描述
在这里插入图片描述
注意2点:
1、代码中的wsdl文件存放目录需要修改为程序存放wsdl的目录。
2、wsdl文件中的地址请修改为正确地址。

Apache CXF引用

在这里插入图片描述
版本根据实际情况而定。

代码整合

在这里插入图片描述

自身作为webService服务端

当第三方系统调用自身系统的api接口时,需要自身系统来做webService服务,将API发布到ESB系统。

流程

在这里插入图片描述

发布webService服务

其他的流程和作为客户端流程一致,就不用多说了,详细的介绍一下发布webService服务的步骤。
1、实现类编写,用于业务逻辑处理,处理客户端发来的请求。
在这里插入图片描述
2、配置类编写,用于发布服务。

package com.vrv.servers.config;import com.sun.org.apache.bcel.internal.generic.IUSHR;
import com.vrv.servers.impi.UserServiceImpi;
import com.vrv.servers.service.IUserService;
import org.apache.cxf.Bus;
import org.apache.cxf.bus.spring.SpringBus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.apache.cxf.transport.servlet.CXFServlet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.xml.ws.Endpoint;@Configuration
public class CxfConfig {@Autowiredprivate Bus bus;@AutowiredIUserService userService;/*** 此方法作用是改变项目中服务名的前缀名,此处127.0.0.1或者localhost不能访问时,请使用ipconfig查看本机ip来访问* 此方法被注释后:wsdl访问地址为http://127.0.0.1:8080/services/user?wsdl* 去掉注释后:wsdl访问地址为:http://127.0.0.1:8080/soap/user?wsdl** @return*/@Beanpublic ServletRegistrationBean disServlet() {ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new CXFServlet(), "/UserServiceImpi/*");return servletRegistrationBean;}@Bean(name = Bus.DEFAULT_BUS_ID)public SpringBus springBus() {return new SpringBus();}/** JAX-WS* 站点服务* **/@Beanpublic Endpoint endpoint() {EndpointImpl endpoint = new EndpointImpl(bus, userService);endpoint.publish("/ces");return endpoint;}
}

访问 http://127.0.0.1:服务端口/UserServiceImpi/ces?wsdl
该请求是可以获取得到wsdl文档的
http://127.0.0.1:服务端口/UserServiceImpi 即可访问到你发布的webService服务提供的接口。

总结

本人使用的是springboot+webService实现的,也存在其他办法实现,在此不做过多的介绍,大致流程基本一致,需要掌握的知识点:wsdl+soapui+webService+cxf+springboot+以及jdk的wsimport命令。


http://chatgpt.dhexx.cn/article/uqrhcyUh.shtml

相关文章

java wsimport方式生成webservice客户端代码

wsimport方法 1.在jdk安装目录bin下wsimport.exe&#xff0c;执行命令(修改红色部分的信息即可) wsimport -keep -d D:\1 -s D:\2 -p com.example.demo.webservice -verbose http://xxxxxxx?wsdl 对应下列命令说明&#xff1a;-keep&#xff1a;是否生成java源文件-d&#x…

wsimport的使用

快速实现一个基于JWS的webservice项目 A.服务器的建立 B.客户端的建立 C.wsimport的使用 D.wsdl的简单讲解 E.soap的使用 F.代码优先还是契约优先 1.使用对应的指令wsimport: wsimport -d F:\2017StudyCode\Tool\webservice -keep -verbose http://localhost:8588/samlai?w…

wsimport命令生成webService java客户端代码

wsimport简介 在JDK的bin文件夹中&#xff0c;有一个wsimport.exe工具&#xff0c;可依据wsdl文件生成相应的类文件&#xff0c;将生存在本地这些类文件拷贝到需要使用的项目中&#xff0c;就可以像调用本地的类一样调用webService提供的方法。该工具可以用于非Java的服务器&a…

wsimport 的使用

wsimport 的使用 用法格式&#xff1a; wismport [options] <WSDL_URL> \其中 [options] 包括&#xff1a; 命令含义-b < path >指定 jaxws/jaxb 绑定文件或附加模式&#xff08;每个 < path > 都必须具有自己的 -b&#xff09;-B< jaxbOption>将此…

wsimport命令生成webservice客户端

一、排除问题 1、今天接到一个任务&#xff0c;我做为客户端&#xff0c;调用服务端接口&#xff0c;通过生成wsdl文件的方式&#xff0c;所以用了wsimport命令&#xff0c;后台提示不支持soap编码 。 2、我看网上说&#xff0c;jdk1.7及以后就不在支持&#xff0c;于是我下…

wsimport生成wsdl代码

wsimport生成wsdl代码 1. webservice接口wsdl生成代码示例2. 打开以上链接&#xff0c;右键查看网页源代码3. 替换复制中的部分内容4. 将以下内容保存为xsd.xjb文件5. 将以下内容保存为jaxp.properties文件6. 在命令行中执行以下命令生成java代码 1. webservice接口wsdl生成代码…

java wsimport 调用_webService----wsimport调用方式

一、工具 1、myEclipse 2、jdk1.7 二、创建服务端 1、创建web Service Project 命名为TheService 2、创建class类ServiceHello.java&#xff0c;位于包com.zyj.service下&#xff0c;并编写供客户端调用的方法&#xff0c;即编译方法代码 3、编译&#xff0c;编译失败时请调整该…

webservice的入门案例2 :使用wsimport命令生成webservice的客户端接口

一 使用wsimport命令生成webservice的客户端接口 1.1 wsimport命令工具 在我们安装的jdk的bin的bin文件夹中&#xff0c;有一个wsimport.exe&#xff0c;这个工具依据wsdl文件生成相应的类文件&#xff0c;然后用这些类文件&#xff0c;就可以像调用本地的类一样调用WebServic…

WebService入门(二)wsimport的使用

前言 本章学习wsimport命令的基本使用 方法 1.概念 在前面快速入门的例子中我们不难看出&#xff0c;我们创建客户端的时候调用了服务端的service类。但是我们知道&#xff0c;服务端的开发语言可不止Java&#xff0c;只不过我们做实验的时候恰好使用了&#xff01;&#xf…

webservice——wsimport命令建立webService本地客户端

一、wsimport简介 在JDK的bin文件夹中&#xff0c;有一个wsimport.exe工具&#xff0c;可依据wsdl文件生成相应的类文件&#xff0c;将生存在本地这些类文件拷贝到需要使用的项目中&#xff0c;就可以像调用本地的类一样调用webService提供的方法。该工具可以用于非Java的服务器…

Webservice生成客户端的案例——Wsimport命令

一、Wsimport命令  wsimport是jdk自带的webservice客户端工具,可以根据wsdl文档生成客户端调用代码(java代码).当然,无论服务器端的WebService是用什么语言写的,都可以生成调用webservice的客户端代码&#xff0c;服务端通过客户端代码调用webservice。  wsimport.exe位于J…

wsimport命令

目录 1、wsimport命令介绍 2、wsimport命令常见问题处理 2.1、问题描述 2.2、解决步骤 1、wsimport命令介绍 wsimport命令是JDK自带的命令&#xff0c;它能够根据服务端说明书&#xff08;wsdl&#xff09;生成对应的本地java代码&#xff0c;wsimport命令对应的参数信息如…

人体感应模块

人体感应模块 简单来说&#xff1a; 端接电源的正极&#xff1b;-端接电源的负值&#xff1b;out端为输出端&#xff0c;当人进入范围时输出高电平&#xff0c;人离开范围时延时一段时间后输出低电平。

K_A12_004 基于STM32等单片机采集人体红外感应(HC-SR501)模块串口与OLED0.96双显示

K_A12_004 基于STM32等单片机采集人体红外感应&#xff08;HC-SR501&#xff09;模块串口与OLED0.96双显示 一、资源说明二、基本参数参数引脚说明 三、驱动说明模块工作原理:对应程序: 四、部分代码说明1、接线引脚定义1.1、STC89C52RCHC-SR501模块1.2、STM32F103C8T6HC-SR501…

人体红外感应-热释电传感器HC-SR501

HC-SR501是基于红外线技术的自动控制模块 &#xff0c; 采用德国原装进口 LHI778 探头设计&#xff0c;灵敏度高&#xff0c;可靠性强&#xff0c;超低电压工作模式 &#xff0c; 广泛应 用于各类自动感应电器设备&#xff0c; 尤其是干电池供电的自动控制产品。 实物图片 电…

人体+LED,实现人体感应灯

#define PIN_1 2 //定义人体红外引脚 #define PIN_2 4 //定义LED灯引脚 void setup() { Serial.begin(9600);//串口初始化 pinMode(PIN_1,INPUT); //设定红外感应器为输入模式 pinMode(PIN_2,OUTPUT); // 设定LED引脚为输出模式 } void loop() { //当红外感应器引脚为高电平…

STM32的 DHT11温湿度模块+红外人体感应模块程序

基于物联网的智能窗户Day3 DHT11温湿度模块HC_SR501红外人体感应模块结果展示ending DHT11温湿度模块 传感器包括一个高分子电阻式感湿度元件和一个NTC测温元件&#xff0c;并于一个高性能8位单片机相连&#xff0c;通过单总线与微处理器通信&#xff0c;只需要一根数据线。 在…

关于HC-SR501人体红外感应模块的光敏电阻取值到底为多少的终极研究

这个光敏电阻到底应该选多大的&#xff1f;商家讲不来&#xff0c;资料里没有&#xff0c;百度搜不到。资料里只说&#xff0c;预留了这个接口&#xff0c;自己买光敏电阻焊接就可以了&#xff0c;但是我焊接了3个不同的光敏电阻&#xff0c;结果全是不符合预期&#xff0c;一度…

Arduino - 驱动HC-SR501 人体红外感应模块

参考文章&#xff1a; Arduino - 驱动HC-SR501 人体红外感应模块 Arduino 使用人体红外感应模块 HC-SR501 代码如下&#xff1a; /* Arduino 驱动HC-SR501 人体红外感应模块 Created 2017/03 by 太极创客本程序旨在使用Arduino Uno驱动HC-SR501 人体红外感应模块。 * 连接说明…

ESP32 Micropython编程(Thonny)04---- 人体感应模块

本人持续分享更多关于嵌入式和单片机的知识&#xff0c;如果大家喜欢&#xff0c;别忘点个赞加个关注哦&#xff0c;让我们一起共同进步 最近使用到人体感应模块HC-SR501&#xff0c;这个模块使用十分简单&#xff0c;看下面代码就可以看出了&#xff0c;而且应用广泛&#xff…