什么是WSDL_wsdl文件详解

什么是WSDL_wsdl文件详解WSDL(网络服务描述语言,WebServicesDescriptionLanguage)是一门基于XML的语言,用于描述WebServices以及如何对它们进行访问。wsdl:definitionsname=”nmtoken”?targetNamespace=”uri”>importnamespace=”uri”location=”uri”/>*

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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

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

<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 操作的例子:

<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 操作的例子:

<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服务的时候指定的名称
这里写图片描述

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 最详细动态规划解析——背包问题

    最详细动态规划解析——背包问题动态规划的定义要解决一个复杂的问题,可以考虑先解决其子问题。这便是典型的递归思想,比如最著名的斐波那契数列,讲递归必举的例子。斐波纳契数列的定义如下:F(0)=1,F(1)=1,F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)用递归可以很快写出这样一个函数,咋一看真牛逼,几行代码就搞定了intfib(inti){if(i<=1){ret

  • 细说Spring——AOP详解(AOP概览)

    细说Spring——AOP详解(AOP概览)一、对AOP的初印象首先先给出一段比较专业的术语(来自百度):在软件业,AOP为AspectOrientedProgramming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而…

  • 穿越时空 一台家庭NAS能为你带来什么

    穿越时空 一台家庭NAS能为你带来什么

  • Sample Rate Conversion

    Sample Rate ConversionSampleRateConversionIntroductionSeetheWikipediaarticleResampling(audio)foragenericdefinitionofsamplerateconversion,alsoknownas"resampling."Theremainderofthisarticledescr…

    2022年10月17日
  • 每天学点GDB 3

    每天学点GDB 3

  • django pycharm_pycharm调试django

    django pycharm_pycharm调试django前言:主要是在开发过程中一些采坑和记录,整理一下资料以防自己以后忘了,也为正在初学或者还未特别熟练使用django的同学能够避开这些,且能够系统性的学习django的使用,这里就不写目录了按照我自己的开发顺序来,大家看到专栏里面的文章顺序就是我的目录了,在本专栏里的代码争取让大家拿到就能用,做一个伸手党,网上好多代码不知道是版本原因还是其他简直是无语,不能用还一堆bug。…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号