前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是WSDL_wsdl文件详解

什么是WSDL_wsdl文件详解

作者头像
全栈程序员站长
发布2022-11-04 17:20:17
7.5K0
发布2022-11-04 17:20:17
举报
文章被收录于专栏:全栈程序员必看

WSDL(网络服务描述语言,Web Services Description Language)是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。

代码语言:javascript
复制
<wsdl:definitions name="nmtoken"? targetNamespace="uri">
<import namespace="uri" location="uri"/> *
<wsdl:documentation .... /> ?
<wsdl:types> ?
<wsdl:documentation .... /> ?
<xsd:schema .... /> *
</wsdl:types>
<wsdl:message name="ncname"> *
<wsdl:documentation .... /> ?
<part name="ncname" element="qname"? type="qname"?/> *
</wsdl:message>
<wsdl:portType name="ncname"> *
<wsdl:documentation .... /> ?
<wsdl:operation name="ncname"> *
<wsdl:documentation .... /> ?
<wsdl:input message="qname"> ?
<wsdl:documentation .... /> ?
</wsdl:input>
<wsdl:output message="qname"> ?
<wsdl:documentation .... /> ?
</wsdl:output>
<wsdl:fault name="ncname" message="qname"> *
<wsdl:documentation .... /> ?
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:serviceType name="ncname"> *
<wsdl:portType name="qname"/> +
</wsdl:serviceType>
<wsdl:binding name="ncname" type="qname"> *
<wsdl:documentation .... /> ?
<-- binding details --> *
<wsdl:operation name="ncname"> *
<wsdl:documentation .... /> ?
<-- binding details --> *
<wsdl:input> ?
<wsdl:documentation .... /> ?
<-- binding details -->
</wsdl:input>
<wsdl:output> ?
<wsdl:documentation .... /> ?
<-- binding details --> *
</wsdl:output>
<wsdl:fault name="ncname"> *
<wsdl:documentation .... /> ?
<-- binding details --> *
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ncname" serviceType="qname"> *
<wsdl:documentation .... /> ?
<wsdl:port name="ncname" binding="qname"> *
<wsdl:documentation .... /> ?
<-- address details -->
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

Jetbrains全家桶1年46,售后保障稳定

WSDL 端口

元素是最重要的 WSDL 元素。

它可描述一个 web service、可被执行的操作,以及相关的消息。

可以把 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。

操作类型

请求-响应是最普通的操作类型,不过 WSDL 定义了四种类型: 类型 定义 One-way 此操作可接受消息,但不会返回响应。 Request-response 此操作可接受一个请求并会返回一个响应 Solicit-response 此操作可发送一个请求,并会等待一个响应。 Notification 此操作可发送一条消息,但不会等待响应。

One-Way 操作

一个 one-way 操作的例子:

代码语言:javascript
复制
<message name="newTermValues">
<part name="term" type="xs:string"/>
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="setTerm">
<input name="newTerm" message="newTermValues"/>
</operation>
</portType >

在这个例子中,端口 “glossaryTerms” 定义了一个名为 “setTerm” 的 one-way 操作。

这个 “setTerm” 操作可接受新术语表项目消息的输入,这些消息使用一条名为 “newTermValues” 的消息,此消息带有输入参数 “term” 和 “value”。不过,没有为这个操作定义任何输出。 Request-Response 操作

一个 request-response 操作的例子:

代码语言:javascript
复制
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>

在这个例子中,端口 “glossaryTerms” 定义了一个名为 “getTerm” 的 request-response 操作。

最近在和一家公司做业务接口对接,由他们那边回调我们这边,对方直接扔过来一个webservice的wsdl文件,让我们按照他们的规范来做webservice服务, 大多数的对接应该是我们创建完服务端的webservice服务,让其他公司根据我们的wsdl文件去开发客户端,但是,大公司就是这样,必须要按照他们的规范来。 那问题来了,怎么根据wsdl文件创建服务端呢? 查看wsdl文件的顺序是从下往上

这里写图片描述
这里写图片描述

请大家铭记查看wsdl文件的顺序是从下往上看的,不然,你会看懵逼的。 第一步:确定接口的名称

这里写图片描述
这里写图片描述

service节点上的name属性值就是这个接口类的名称;

这里写图片描述
这里写图片描述

也就是说如果你要根据wsdl文件创建服务端的话就需要你去创建一个名字为:IHelloWord的接口。 第二步:确定接口中都有哪些方法以及方法的名称

这里写图片描述
这里写图片描述

找binding节点下的operation子节点中的name属性值

这里写图片描述
这里写图片描述

一个operation节点就代码一个方法,也就是在接口中声明几个方法。 第三步:确定接口中方法的参数类型,顺序 假设我要找sayHello方法的参数类型和顺序; 1:找出binding节点对应的porttype节点

这里写图片描述
这里写图片描述

2:找出porttype中每一个operation中的input和output对应的message

这里写图片描述
这里写图片描述

3:找到message中对应

这里写图片描述
这里写图片描述

从上面圈住的部分可以看出来: sayHello方法有两个参数,第一个参数的类型为String,第二个参数的类型为int。 可以对比一下接口中的方法: 第四步:找出这个服务类中方法的返回值类型 1:找出这个方法所在的porttype节点

这里写图片描述
这里写图片描述

2:找出这个porttype中operation中的output指向的message节点

这里写图片描述
这里写图片描述

3:找到tyeps节点下name属性值为sayHelloResponse的element节点

这里写图片描述
这里写图片描述

从上图中圈住的部分就可以看出,这个返回值为String类。 对比java代码; 第五步:确定对外提供服务的url地址

这里写图片描述
这里写图片描述

service中的address节点中有一个location的地址就是对外提供调用的地址

这里写图片描述
这里写图片描述

这里的url的第一级目录和二级目录会影响我们的配置; 一级目录影响的是:web.xml中监听器的匹配规则

这里写图片描述
这里写图片描述

二级目录影响的是:注册webservice服务的时候指定的名称

这里写图片描述
这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/203702.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档