加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService学习之路二

发布时间:2020-12-16 22:10:31 所属栏目:安全 来源:网络整理
导读:这里主要是对昨天的简单的WS示例生成的wsdl进行简单的分析。 很多节点的意思都是自己的理解,也有简单的参考外面的文档,可能名称描述不是很合理或者意思理解有误, 也有部分不明白的地方,也希望有看到的朋友指明不足的地方和我描述的疑问。感激不

这里主要是对昨天的简单的WS示例生成的wsdl进行简单的分析。

很多节点的意思都是自己的理解,也有简单的参考外面的文档,可能名称描述不是很合理或者意思理解有误,

也有部分不明白的地方,也希望有看到的朋友指明不足的地方和我描述的疑问。感激不尽。

?

WebService学习之路一: ?http://trylin.iteye.com/blog/1906819

?

二、理解WSDL

? ? wsdl中有类似java对象的引用关系,通过wsdl我们可以知道此服务对外的地址,方法,以及方法的输入输出参数类型等。

访问我们发布的WS?http://localhost:8888/WS?wsdl?

?


?Wsdl的元素根节点是 definitions,从单词的意思可以看出是对整个wsdl文件的解释。

?xmlns:tns=http://impl.service.ws.trylin.com/? xml命名空间

?targetNamespace="http://impl.service.ws.trylin.com/".//表示下面的节点都是指向的这个命名空间

name="TestImplService"? //整个wsdl 的一个命名? 这里默认是服务名 ?

definitions下有

<import?namespace="http://service.ws.trylin.com/"?location="http://localhost:8888/WS?wsdl=1"/>

这个理解为xml导入并给定命名空间,location为xml地址,下面会对这个导入的xml简单理解。

?

definitions子元素的定义主要包含两部分

<!--[if !supportLists]-->1、? <!--[endif]-->具体定义

<!--[if !supportLists]-->2、? <!--[endif]-->抽象定义

?参考:http://www.blogjava.net/baoyaer/articles/116413.html

1、具体定义

?

?通过具体定义,可以简单的看到服务对外的服务名称和服务方法。

1.1、binding?

xmlns:ns1=” http://service.ws.trylin.com/”? 相当与引用一个命名空间下的xml元素

type="ns1:ITest" ??type类型 ?ns1对应上面的空间名,表示这个ITest是属于ns1指向的空间中定义的类型

soap:binding声明将把 SOAP 作为绑定和传输服务使用? style属性可选 rpc/ document?

operation?表示服务发布的几个方法

input /output分别指的是方法的输入输入 其中soap:body?use="literal"? use的取值也是可选的 literal/ encoded

关于 soap:binding中的style属性 和 soap:body中的use属性的区别,我没能理解,希望有人看懂后,指点一下

参考的链接:http://www.ibm.com/developerworks/cn/webservices/ws-whichwsdl/

1.2、service?

这个节点主要是对发布服务的描述 name属性 表示对外发布的服务名称

Port 服务端口声明? binding="tns:TestImplPortBinding" 这里是指向我们之前看到的binding对象。soap:address 服务对外的地址。

?

2、抽象定义

通过抽象定义,可以具体的了解到服务对外的一些具体信息,比如包含的那些类型的数据,方法的参数,返回值等等。

找到<import?namespace="http://service.ws.trylin.com/"?location="http://localhost:8888/WS?wsdl=1"/>

在浏览器中输入?http://localhost:8888/WS?wsdl=1?回车



?2.1、Types

???????? Types表示的是类型,从xsd:import 可以看出 这里又是一个引用的一个schema

浏览器中输入schemaLocation中的?http://localhost:8888/WS?xsd=1



?<xs:element?name="add"?type="tns:add"/>

<xs:element?name="addResponse"?type="tns:addResponse"/>

这里表示的是服务对外的方法的 输入输出对象,找到引用的 tns:add? tns:addResponse

<xs:complexType?name="add">

<xs:sequence>

<!—arg表示输入对象的参数 0表示顺序? arg0不便于理解,后面会介绍怎么改变参数的名称

参数类型是 type int-->

<xs:element?name="arg0"?type="xs:int"/>

<xs:element?name="arg1"?type="xs:int"/>

</xs:sequence>

</xs:complexType>

<xs:complexType?name="addResponse">

<xs:sequence>

<!—return表示返回? 返回类型是int -->

<xs:element?name="return"?type="xs:int"/>

</xs:sequence>

</xs:complexType>

这里对输入输出对象的简单描述

?

2.2、Message

Message是对服务对外方法的描述,每一个方法分输入和输出两部分

<message?name="add">

<part?name="parameters"?element="tns:add"/>

</message>

<message?name="addResponse">

<part?name="parameters"?element="tns:addResponse"/>

</message>

Element=”tns:add”这里把具体的描述指向了 Types中的元素。

?

3、portType

PortType? 服务类的具体定义? name定义的类型名称

operation?name="add" 定义的方法

<input?message="tns:add"/>

<output?message="tns:addResponse"/>

Input方法的输入类型?

output?方法的输入类型

?

大概的描述,自己整理起来也有点混乱的感觉

尤其是?关于?soap:binding中的style属性?和?soap:body中的use属性的区别(各位知道的话,请不要吝啬哦,打几个字,在回复中告诉我,谢谢。呵呵。。。)

关于这里,我想以后还得回过头查下相关的资料,先把全部的视频看完,在把自己的一些疑问一个个解决,

不求一次性全部理解,囫囵吞枣的过一遍,然后在仔细的再看一遍,这可能也是一种好的学习方法。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读