webservice概述及cxf在Java开发中应用(四) 认识WSDL

    在前面的章节中我们访问服务都加上了“?wsdl”,wsdl到底是什么,这一节我们将详细讲述。

    wsdl英文为Web Services Description Language,即网络服务描述语言,它是XML的子集,所以它同样遵守XML的相关规范。下面是一个wsdl文件内容:

<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://imlp.ws.dqjb.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://schemas.xmlsoap.org/soap/http" xmlns:ns1="http://ws.dqjb.com/"name="HelloWorldWS" targetNamespace="http://imlp.ws.dqjb.com/">
<wsdl:import location="http://10.114.73.30:8080/helloWorld?wsdl=HelloWorld.wsdl" namespace="http://ws.dqjb.com/"></wsdl:import>
<wsdl:binding name="HelloWorldWSSoapBinding" type="ns1:HelloWorld">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="sayHi">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="sayHi">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="sayHiResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getTaskByUser">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="getTaskByUser">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getTaskByUserResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="HelloWorldWS">
<wsdl:port binding="tns:HelloWorldWSSoapBinding" name="HelloWorldImplPort">
<soap:address location="http://10.114.73.30:8080/helloWorld"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

    可以看到wsdl文档是由一个definitions为根元素包裹的XML文档。它有以下个主要元素:

    definitions:值么wsdl文档名称,文档的目标文件控件路径。它包含两个元素:

                  a.targetNamespace 相当于Java中的package,指明实现类的路径。

                  b.xmlns    相当于import,需要引入什么包。

    import:包含location和namespace,相当于引用接口

    types:数据定义,一般定义数据类型。

    message:2N个message,N指的是方法个数。

    portType:定义了操作的集合,也就是说webservice里面定义了多少方法就有多少operation元素。

    operation:操作,一个操作里面包含一个input和output,分别定义一个输入和输出对象。

    binding:每个端口定义消息格式和协议细节,包含operation

    service:包含一个port子元素,包含了绑定地址

    port:定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点

    minOccurs:types中元素,在定义参数时最小出现的次数。

    maxOccurs:types中元素,在定义参数时最大出现的次数,如果看到值为unbounded,则表示不限定。

    一般情况下,我们读一个wsdl文档,可以先从portType下手,找到这个服务一共提供了几个方法或者操作,再去找对应的input和output对应的message,然后在types里找到输入及返回值类型及个数,这样就可以大概推出这个接口是怎么定义的,有哪些方法,参数是什么,返回是什么,在遇到问题时就能够迎刃而解。

    扩展:

    一个webservice有三个重要的名词

    wsdl:网络服务描述文档

    soap:Simple Object Access Protocol 简单对象访问协议

    UDDI:Universal Description Discovery and Integration 统一描述、发现和集成协议

    soap消息是数据传输的核心,以Envelope为根元素,包含header和body,其中header里面包含了用户自定义内容,body里包含数据,格式与wsdl定义内容一致。webservice其实就是soap消息的传输。

    UDDI:是一种webservice服务注册协议,没有用过,不做描述。


转载于:https://my.oschina.net/wujialing/blog/411798

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值