WebService学习,wsdl文件详解

目录

  • 第一章、起因
    • 1.1)学习原因
    • 1.2)提问的过程(逐步提出问题)
          • 1、?wsdl链接的含义,有什么作用?
          • 2、什么是wsdl文档?
          • 3、如何阅读wsdl文件?
          • 4、wsdl文件有什么作用?
          • 5、什么是Web服务?Web Service是什么
          • 6、如何使用wsdl文件生成Java代码
          • 7、生成Java代码包含哪些内容?有什么作用
          • 8、如何将生成的Java类集成到项目中,实现与Web服务的通信
          • 9、如何调用生成的Java类中的方法?
  • 第二章、学习过程(逐步解决问题过程)
    • 2.1)什么是WSDL
      • 2.1.1)WSDL链接的含义,有什么作用?
      • 2.1.2)什么是wsdl文档?
      • 2.1.3)如何阅读WSDL文档?
    • 2.2)Web Service技术
      • 2.2.1)Web Service技术介绍
      • 2.2.2)通过wsdl文件生成客户端代码(Java代码)
      • 2.2.3)生成Java代码包含哪些内容?有什么作用
      • 2.2.4)生成的Java类集成到项目中并访问Web服务
    • 2.3)如何调用生成的Java类中的方法?
  • 第三章、
    • 3.1)发送soap请求
    • 3.2)
    • 3.3)
  • 第四章、
    • 4.1)
    • 4.2)
    • 4.3)备注Axis 1.4依赖的jar包

友情提醒:

先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。

第一章、起因

1.1)学习原因

起因
领导啥也没说,直接给了个wsdl地址,类似于下面这种后面拼个?wsdl:

http://127.0.0.1:8080/xxxx/hello?wsdl

1.2)提问的过程(逐步提出问题)

每个问题的详细答案都在后面的文章中

1、?wsdl链接的含义,有什么作用?

简单回答:返回WSDL描述文档

2、什么是wsdl文档?

简单回答:一个xml格式的描述文档,可以被用来生成客户端代码(Java代码),以便与Web服务进行通信。

3、如何阅读wsdl文件?

简单回答:从下往上阅读

4、wsdl文件有什么作用?

简单回答:描述web服务,生产Java代码

5、什么是Web服务?Web Service是什么

简单回答:Web Service部署完后可以通过URL访问Web服务

6、如何使用wsdl文件生成Java代码

简单回答:使用wsim命令

7、生成Java代码包含哪些内容?有什么作用

简单回答:在本地通过这些Java代码(客户端代码)访问调用远程Web服务中的方法

8、如何将生成的Java类集成到项目中,实现与Web服务的通信

简单回答:将生成的客户端代码复制到项目中,添加客户端代码需要的依赖包,编写代码调用服务。

9、如何调用生成的Java类中的方法?

第二章、学习过程(逐步解决问题过程)

2.1)什么是WSDL

2.1.1)WSDL链接的含义,有什么作用?

刚看到的时候比较懵,先尝试访问了一下这个链接http://127.0.0.1:8080/xxxx/hello?wsdl,返回了一个WSDL文件,文件内容为XML格式:
在这里插入图片描述

2.1.2)什么是wsdl文档?

WSDL是XML格式的文档,有以下作用:

①标准化描述web服务
WSDL是用XML的语言来标准化描述Web服务的描述语言(Web Services Description Language的缩写),文件内容为xml格式,以.wsdl结尾。用于描述如何访问特定的Web服务以及如何与其进行交互。包括web服务的具体功能接口(调用方式、输入参数、输出参数以及相关的消息格式)。

②发现可用的Web服务
描述Web服务的端点(endpoint)即客户端可以访问的服务位置,以及使用的通信协议和绑定信息。(可以将端口视为Web服务的端点)。

③定义通信协议和消息格式
描述客户端和服务端之间交换的消息的结构和格式,以便双方能够理解和解析这些消息。对于分布式系统和跨平台集成非常重要。

④生成客户端代码(Java代码)
WSDL文档可以用来生成客户端代码(Java代码),以便与Web服务进行通信。

2.1.3)如何阅读WSDL文档?

WSDL文档元素阅读顺序如下:从文档最下放找到service节点然后按如下的顺序往上看

元素介绍:1、服务(service)节点:定义了Web服务的具体网络地址(Endpoint),也就是服务的URL。service标签包含了服务端端口(port)属性对应2、服务端口(port)节点:通常包含Binding属性:将抽象操作映射到具体的通信协议和消息格式,例如SOAP协议。通过Binding属性找到binding节点3、绑定(Binding):binding节点中包含具体的绑定信息,含有type属性。通过type属性找到相关联的端口节点(portType)4、端口类型(PortType)节点:可以理解为一个类,一个接口。PortType里定义包含了多个操作(operation )节点5、操作(operation)节点: 相当于该类里有一个方法,name就是方法名称。operation 包含了input节点,output节点,和fault节点(不常用)6、输入输出(Input和output)节点:input节点对应了Web服务的输入消息即参数的定义。output节点对应了Web服务输出消息即返回值的定义。他们有个属性叫做message,通过message属性找到对应message节点。7、消息(message)节点:描述了消息的组成部分,即消息的参数和类型。一个消息包含多个part节点可以传递一个或者多个参数。8、消息组成(part)节点:part是消息的组成部分,多个part组成一个消息。part包含属性element对应(element)节点。9、元素(element)节点:定义了数据的类型。通过name属性定义参数的名称,通过type属性定义参数的类型。

2.2)Web Service技术

2.2.1)Web Service技术介绍

Web Service是什么
是一项技术,能使得运行在不同机器上的不同应用无须借助第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。
Web Service如何部署:
Web Service的部署通常需要遵循以下步骤:

①构建Web Service:编写符合标准和规范的Web Service代码,比如Java代码

②打包Web Service:将Web Service打包成WAR文件或EAR文件。

③部署到Web容器:将打包好的Web Service部署到目标Web容器中(比如tomcat服务器,用于托管和运行Web应用程序的服务器环境,处理HTTP请求、执行Servlet和JSP等Web组件)

④验证部署:通过相应的URL进行访问Web服务,确保Web Service已经成功部署到Web容器。

2.2.2)通过wsdl文件生成客户端代码(Java代码)

只要安装了JDK1.6以上版本就可以通过wsimport命令使WSDL文件生成Java代码(客户端代码)以便客户端可以访问已发布的Web服务。wsimport命令是来自JAX-WS,它是JDK 1.6及以上版本的一部分。
示例:

wsimport -s D:\workspace\src -p main.java.com.tools -keep http://localhost:8080/HelloWorld?wsdl

-s选项:指定生成的Java源文件的绝对路径,一般都是src结尾
-p选项:指定生成的Java代码文件的目录(生成代码所在包名,也就是项目中src后面的目录)
-keep选项:表示保留生成的Java源文件在指定的输出目录中,而不会将其删除。
URL地址:是WSDL文件的地址。

2.2.3)生成Java代码包含哪些内容?有什么作用

这些Java代码包括用于调用服务的框架和类。这些生成的类将充当客户端与服务端进行通信的接口。可以用于创建客户端,在Java应用程序中调用远程Web服务的方法,并处理返回的数据。
生成的Java代码通常包括以下内容:

Service接口文件:包含了Web服务的方法定义和参数信息。通常以Service结尾,比如HelloWorldService.java。代表Web服务接口的Java接口
代表Web服务数据类型的Java类
代表Web服务方法的Java方法

如图:
在这里插入图片描述

这些类和方法是根据wsdl文件中定义的服务、端点、操作和消息结构生成的,生成的Java代码中包含了与SOAP协议相关的类和方法,可以帮助你构建符合SOAP协议要求的消息,并将这些消息发送到远程服务端点。因此可以直接与远程服务进行交互,调用远程服务提供的操作,并获取相应的响应数据。

2.2.4)生成的Java类集成到项目中并访问Web服务

①将生成的Java类文件复制到项目的源代码目录中,通常是src/main/java/xxx/xx

②如果生成的Java类使用了其他依赖项。需要通过构建工具(如Maven或Gradle)的配置文件(例如pom.xml或build.gradle)来添加依赖。

③如果生成的Java类是用于与Web服务进行通信的客户端代码,需要编写代码来调用这些类,以实现与Web服务的交互。这可能涉及创建客户端实例、调用Web服务的方法等操作。

import com.example.weather.Weather; // 导入生成的Java类public class WeatherClient {public static void main(String[] args) {// 创建Web服务客户端实例Weather weatherService = new Weather();// 调用Web服务的方法String result = weatherService.getWeather("New York");// 处理返回结果System.out.println("Weather in New York: " + result);}
}

2.3)如何调用生成的Java类中的方法?

第三章、

3.1)发送soap请求

使用wsdl文件生成Java代码后,通常需要发送SOAP请求。SOAP请求是一种基于XML的消息协议,用于在分布式应用程序之间进行通信。在生成的Java代码中,通常会包含与SOAP请求相关的类和方法,以便你可以使用这些类和方法来构建和发送SOAP请求到特定的Web服务端点。SOAP请求通常包括对应的操作、输入参数和其他必要的信息,以便与Web服务进行交互。
使用wsdl文件生成Java代码后,怎么发送soap请求

回答

使用wsdl文件生成Java代码后,你可以使用生成的Java类和方法来构建和发送SOAP请求。通常,你需要执行以下步骤:

创建一个SOAP消息:使用生成的Java类中的方法,创建一个符合要求的SOAP消息。

指定SOAP服务端点:设置SOAP消息的目标地址,即SOAP服务的端点地址。

发送SOAP请求:使用生成的Java类中的方法,将构建好的SOAP消息发送到指定的SOAP服务端点。

以下是一个简单的示例代码,演示如何使用生成的Java类发送SOAP请求:

// 创建一个实例
YourGeneratedService service = new YourGeneratedService();
YourGeneratedPortType port = service.getYourGeneratedPort();// 创建一个SOAP消息
YourRequestType request = new YourRequestType();
// 设置请求参数
request.setParam1("value1");
request.setParam2("value2");// 发送SOAP请求并获取响应
YourResponseType response = port.yourOperation(request);

在这个示例中,YourGeneratedService和YourGeneratedPortType是根据wsdl文件生成的Java类,YourRequestType和YourResponseType是根据wsdl文件中定义的消息结构生成的Java类。yourOperation是根据wsdl文件中定义的操作生成的Java方法,用于发送SOAP请求并获取响应。

3.2)

3.3)

第四章、

4.1)

4.2)

4.3)备注Axis 1.4依赖的jar包

Axis 1.4依赖的jar包,wsdl4j的包应该使用1.6.2

<!-- axis 1.4 jar start --><dependency><groupId>org.apache.axis</groupId><artifactId>axis</artifactId><version>1.4</version></dependency><dependency><groupId>commons-discovery</groupId><artifactId>commons-discovery</artifactId><version>0.2</version><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.axis</groupId><artifactId>axis-jaxrpc</artifactId><version>1.4</version></dependency><dependency><groupId>org.apache.axis</groupId><artifactId>axis-saaj</artifactId><version>1.4</version></dependency><dependency><groupId>wsdl4j</groupId><artifactId>wsdl4j</artifactId><version>1.6.2</version></dependency><!-- axis 1.4 jar end -->

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/697321.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot+vue的智慧社区系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

(十四)【Jmeter】线程(Threads(Users))之开放模型线程组(Open Model Thread Group)

简述 操作路径如下: 开放模型线程组(Open Model Thread Group) 是 JMeter 5.5 版本中引入的一个新特性,它允许用户创建具有可变负载的负载配置文件。相较于传统的线程组,开放模型线程组提供了更多的灵活性和动态调整的能力。 优点: 灵活性:允许测试人员根据测试需求动…

python 提取PDF文字

使用pdfplumber&#xff0c;不能提取扫描的pdf和插入的图片。 import pdfplumberfile_path rD:\UserData\admindesktop\官方文档\1903_Mesh-Models-Overview_FINAL.pdf with pdfplumber.open(file_path) as pdf:page pdf.pages[0]print(page.extract_text()) # 所以文字prin…

Verilog刷题笔记33

题目&#xff1a; You are given a four-bit input vector in[3:0]. We want to know some relationships between each bit and its neighbour: out_both: Each bit of this output vector should indicate whether both the corresponding input bit and its neighbour to t…

Kafka3.x进阶

来源&#xff1a;B站 目录 Kafka生产者生产经验——生产者如何提高吞吐量生产经验——数据可靠性生产经验——数据去重数据传递语义幂等性生产者事务 生产经验——数据有序生产经验——数据乱序 Kafka BrokerKafka Broker 工作流程Zookeeper 存储的 Kafka 信息Kafka Broker 总…

戏曲文化苑|戏曲文化苑小程序|基于微信小程序的戏曲文化苑系统设计与实现(源码+数据库+文档)

戏曲文化苑小程序目录 目录 基于微信小程序的戏曲文化苑系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、微信小程序前台 2、管理员后台 &#xff08;1&#xff09;戏曲管理 &#xff08;2&#xff09;公告信息管理 &#xff08;3&#xff09;公告类型管理…

PostgreSQL 的实体化视图介绍

PostgreSQL 实体化视图提供一个强大的机制&#xff0c;通过预先计算并将查询结果集存储为物理表来提高查询性能。本教程将使用 DVD Rental Database 数据库作为演示例子&#xff0c;指导你在 PostgreSQL中创建实体化视图。 了解实体化视图 实体化视图是查询结果集的快照&…

【高德地图】Android高德地图初始化定位并显示小蓝点

&#x1f4d6;第3章 初始化定位并显示小蓝点 ✅第1步&#xff1a;配置AndroidManifest.xml✅第2步&#xff1a;设置定位蓝点✅第3步&#xff1a;初始化定位✅完整代码 ✅第1步&#xff1a;配置AndroidManifest.xml 在application标签下声明Service组件 <service android:n…

Aigtek高压放大器是什么东西做的

在许多电子应用中&#xff0c;需要将低电压信号放大到较高电压以满足特定的需求。为了实现这个目标&#xff0c;高压放大器被广泛采用。高压放大器是一种专用电子设备&#xff0c;使用特定的电路和器件来增益输入信号的电压。它通常由以下几个主要组成部分构成。 电源供应 高压…

Linux编译器---gcc/g++使用详解

目录 前言 gcc/g介绍 gcc/g的编译指令&#xff08;以gcc为例&#xff09; ​编辑 gcc选项 预处理(进行宏替换) 编译&#xff08;生成汇编&#xff09; 汇编&#xff08;生成机器可识别代码&#xff09; 链接&#xff08;生成可执行文件或库文件&#xff09; 函数库 概念 …

stable diffusion官方版本复现

踩了一些坑&#xff0c;来记录下 环境 CentOS Linux release 7.5.1804 (Core) 服务器RTX 3090 复现流程 按照Stable Diffusion的readme下载模型权重、我下载的是stable-diffusion-v1-4 版本的 1 因为服务器没法上huggingface&#xff0c;所以得把权重下载到本地&#xff…

初识表及什么是数据表

一、了解表 1.1.概述 表是处理数据和建立关系型数据库及应用程序的基本单元&#xff0c;是构成数据库的基本元素之一&#xff0c;是数据库中数据组织并储存的单元&#xff0c;所有的数据都能以表格的形式组织&#xff0c;目的是可读性强。 1.2.表结构简述 一个表中包括行和列…

当项目经理的一定要考PMP嘛?

PMP资格认证并不是强制性要求&#xff0c;但强烈建议考虑获取该资格&#xff01;首先让我们来了解一下PMP是什么&#xff0c;然后再谈谈为什么建议考取PMP资格的理由。 PMP&#xff08;Project Management Professional&#xff09;是项目管理专业人员的资格认证。该认证由全球…

SCI一区 | Matlab实现GAF-PCNN-MSA格拉姆角场和双通道PCNN融合注意力机制的多特征分类预测

SCI一区 | Matlab实现GAF-PCNN-MSA格拉姆角场和双通道PCNN融合注意力机制的多特征分类预测 目录 SCI一区 | Matlab实现GAF-PCNN-MSA格拉姆角场和双通道PCNN融合注意力机制的多特征分类预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 1.【SCI一区级】Matlab实…

老子云3D资源服务与应用平台详解

老子云平台定位 老子云目标客群 老子云平台架构 老子云平台价值 核心优势 -AMRT标准格式 -自动模型轻量化 -持续精进的底层技术算法 -千万级轻量化3D资源素材市场 功能服务 -格式转换 -蒙皮动画轻量化 -倾斜摄影轻量化 -效果编辑器 -应用编辑器 -3D OFD应用 -A3D PPT -3D资源…

力扣日记2.22-【回溯算法篇】47. 全排列 II

力扣日记&#xff1a;【回溯算法篇】47. 全排列 II 日期&#xff1a;2023.2.22 参考&#xff1a;代码随想录、力扣 47. 全排列 II 题目描述 难度&#xff1a;中等 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输…

十八、图像像素类型转换和归一化操作

项目功能实现&#xff1a;对一张图像进行类型转换和归一化操作 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 norm.h #pragma once#include<opencv2/opencv.hpp>using namespace cv;class NORM { public:void norm(Mat& image); };#pragma once二…

智慧公厕是什么?智慧公厕是构建智慧城市的环境卫生基石

随着城市化进程的不断加速&#xff0c;城市人口密度和流动性也逐渐增大&#xff0c;对城市公共设施的需求与日俱增。而在这些公共设施中&#xff0c;公厕作为城市基础设施中不可或缺的一环&#xff0c;对城市的环境卫生和市民生活质量起着举足轻重的作用。如何提高公厕的管理效…

MacOs 围炉夜话

文章目录 一、安装 Mac 一、安装 Mac macOS是一套由苹果开发的运行于Macintosh系列电脑上的操作系统。macOS是首个在商用领域成功的图形用户界面操作系统。 VM虚拟机怎么安装mac os&#xff1f;&#xff08;全教程&#xff09; 虚拟机&#xff1a;VMware Workstation 17 pro W…

新书推荐:《分布式商业生态战略:未来数字商业新逻辑与企业数字化转型新策略》

近两年&#xff0c;商业经济环境的不确定性越来越明显&#xff0c;市场经济受到疫情、技术、政策等多方因素影响越来越难以预测&#xff0c;黑天鹅事件时有发生。在国内外经济方面&#xff0c;国际的地缘政治对商业经济产生着重大的影响&#xff0c;例如供应链中断&#xff0c;…