Webservice学习之WSDL详解

1. <definitions/>

这部分在基础篇里已经介绍,主要说明引用了哪些schema以及schema的位置等,可以看下基础篇的介绍,SayHello的Demo这部分内容如下:

<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://impl.service.server.ws.devins.com/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://schemas.xmlsoap.org/soap/http"
    xmlns:ns1="http://service.server.ws.devins.com/" name="SayHelloImplService"
    targetNamespace="http://impl.service.server.ws.devins.com/">

2. <types/>

<types> 元素定义 web service 使用的数据类型,为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型

         <!--
          types
          schema:约束xml格式
          element:用来指定xml中的标签
                  <sayHello></sayhello>
                  <sayHelloResponse></sayHelloResponse>
          complexType:说明是一个复合类型
                           请求
                   <sayHello>
                       <arg0>string</arg0>
                   </sayhello>
                     响应
                   <sayHelloResponse>
                       <return>string</return>
                   </sayHelloResponse>

        回看下demo的请求与响应的核心内容
             <q0:sayHello>
              <arg0>devins</arg0>
            </q0:sayHello>

            <ns2:sayHelloResponse">
              <return>Hello: devins</return>
            </ns2:sayHelloResponse>

      -->
    <wsdl:types>
        <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:tns="http://service.server.ws.devins.com/" elementFormDefault="unqualified"
            targetNamespace="http://service.server.ws.devins.com/" version="1.0">
            <xs:element name="sayHello" type="tns:sayHello" />
            <xs:element name="sayHelloResponse" type="tns:sayHelloResponse" />
            <xs:complexType name="sayHello">
                <xs:sequence>
                    <xs:element minOccurs="0" name="arg0" type="xs:string" />
                </xs:sequence>
            </xs:complexType>
            <xs:complexType name="sayHelloResponse">
                <xs:sequence>
                    <xs:element minOccurs="0" name="return" type="xs:string" />
                </xs:sequence>
            </xs:complexType>
        </xs:schema>
    </wsdl:types>

3. <message/>

<message> 元素定义一个操作的数据元素,每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。

        <!--
        message:用来定义soap消息结构
        part:部分/组成的意思
        实际上引用的就是上面schema中的约束格式
     -->
    <wsdl:message name="sayHelloResponse">
        <wsdl:part element="ns1:sayHelloResponse" name="parameters" />
    </wsdl:message>
    <wsdl:message name="sayHello">
        <wsdl:part element="ns1:sayHello" name="parameters" />
    </wsdl:message>

4. <portType/>

       <portType> 元素是最重要的 WSDL 元素,它可描述一个 web service、可被执行的操作,以及相关的消息,可以把 <portType> 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。

        <!--
        portType:用来指定服务器端的SEI(接口)
        operation:表示操作/行为,即SEI中定义的方法
        input:方法sayHello的输入
        output:方法sayHello的输出
        输入输出引用的是上面message的定义
     -->
    <wsdl:portType name="ISayHello">
        <wsdl:operation name="sayHello">
            <wsdl:input message="ns1:sayHello" name="sayHello" />
            <wsdl:output message="ns1:sayHelloResponse" name="sayHelloResponse" />
        </wsdl:operation>
    </wsdl:portType>

5. <binding/>

<binding> 元素为每个端口定义消息格式和协议细节。

    <!--
        binding:用来指定SEI的实现类
        type属性:引用<portType>定义
        <soap:binding style="document">:表示传输的一个document (xml)
        <input><output>与上节说的相同
        <soap:body use="literal" />:表示body传输采用文本即xml格式的文本
     -->
    <wsdl:binding name="SayHelloImplServiceSoapBinding" type="ns1:ISayHello">
        <soap:binding style="document"
            transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="sayHello">
            <soap:operation soapAction="" style="document" />
            <wsdl:input name="sayHello">
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output name="sayHelloResponse">
                <soap:body use="literal" />
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>

6. <service>

    <!--
        service:相同于webservice容器,也可理解为一个工厂
        name:用于指定客户端的容器类/工厂类,客户端代码从此类开始
        port:用来指定服务器端的一个入口(对应SEI的实现类)
        port binding:引用上面定义的
        port name:容器通过这个方法获得实现类
        address:客户端真正用于请求的地址

        回想我们的demo:
        SayHelloImplService factory = new SayHelloImplService();
        SayHelloImpl sayHelloImpl = factory.getSayHelloImplPort();
     -->
    <wsdl:service name="SayHelloImplService">
        <wsdl:port binding="tns:SayHelloImplServiceSoapBinding"
            name="SayHelloImplPort">
            <soap:address location="http://132.122.239.74:8089/ws/sayhello" />
        </wsdl:port>
    </wsdl:service>

7. 总结

转自:https://blog.csdn.net/posonrick/article/details/45580355?utm_source=blogxgwz1

原文地址:https://www.cnblogs.com/sunfie/p/10662719.html

时间: 2024-11-10 14:53:46

Webservice学习之WSDL详解的相关文章

WebService中的WSDL详解

WebService中的WSDL详解 有人在WebService开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户(或后台)给你一个WSDL文件(或网址),说按照上面的进行适配, 这时就要对WebService的WSDL有一定的理解,本文将对WSDL(WebService描述语言)进行详细总结. WSDL (Web Services Description Language,Web服务描述语言)是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端

WebService中的WSDL详解 及jmeter测试

首先简单讲解一下什么是wsdl. 一个WSDL文档通常包含8个重要的元素,即definitions.types.import.message.portType.operation.binding.service元素.这些元素嵌套在definitions元素中,definitions是WSDL文档的根元素. WSDL文档外层结构图示: WSDL 服务进行交互的基本元素: Types(消息类型):数据类型定义的容器,它使用某种类型系统(如 XSD). Message(消息):通信数据的抽象类型化定义

php学习之道:WSDL详解(一)

WSDL文档使用web服务描述语言来定义服务. 文档包括逻辑(抽象)部分和具体部分. 抽象部分用于定义独立于实现的数据类型和消息,具体部分定义一个endpoint如何实现一个可以与外界进行交互的服务. 通常建议在写代码前定义WSDL文档和XML schema,但是这就要求对WSDL非常熟悉. 逻辑部分: 包括types,message以及portType元素.types元素中,xml schema用来定义组成消息的数据的结构.一定数量的消息元素用来定义服务所用消息的格式.portType元素包括

php学习之道:WSDL详解(三)

通过声明方式定义绑定(binding)属性 如果你在服务中采用SOAP binding,你可以使用JAX-WS来指定一定数量的属性binding.这些属性指定对应你在WSDL中指定的属性.某些设置,比如参数类型,可以约束你实现的方法,这些设置也影响声明的效用. @SOAPBinding声明,定义在javax.jws.soap.SOAPBinding接口中.它提供发布时的SOAP Binding细节.如果@SOAPBinding没有被指定,则用缺省的doc/literal SOAPBinding.

php学习之道:WSDL详解(二)

3.定义服务使用的逻辑消息 当服务的操作被调用时,服务被定义为消息交换.在wsdl文档中,这些消息被定义message元素.这些消息由称之为part元素的部分组成. 一个服务的操作,通过指定逻辑消息的方式来定义.当操作被调用时,逻辑消息被交换.(也就是说,逻辑消息代表了服务的操作)这些逻辑消息,将在网络上传输的数据定义为xml文档.他包含了所有的参数,这些参数是方法调用的一部分.(也就是说,逻辑消息里的参数,是操作对应方法的参数集合) 消息和参数列表:每一个被服务暴露的操作能且仅能有一个输入消息

WebService WSDL详解(上)

为什么使用WSDL? 像Internet协议之类的标准有没有为权威所利用,或者人们这样看待它是因为顺之所获的好处远远超出了代价?曾经有许多试图建立的标准都流产了.有时候,那些还没有普遍使用的标准甚至由法令或政府规定强行推出:Ada语言就是一例. 我相信正是跟随标准所带来的好处使它广泛接受.例如,对于铁路服务来说,真正重要的是,不同公司所铺设的铁路结合到一起,或者是来自好几个公司的产品协调的工作在一起.几家大的企业合力建立了SOAP标准.Web Service描述语言(WSDL)向这种Web Se

WSDL 详解

WSDL 详解 转载自:http://kalogen.javaeye.com/blog/418958 WSDL (Web Services Description Language,Web服务描述语言)是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程过程调用).WSDL首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终定义具体部署

WSDL详解(一)

WSDL文档使用web服务描述语言来定义服务. 文档包括逻辑(抽象)部分和具体部分. 抽象部分用于定义独立于实现的数据类型和消息,具体部分定义一个endpoint如何实现一个可以与外界进行交互的服务. 通常建议在写代码前定义WSDL文档和XML schema,但是这就要求对WSDL非常熟悉. 逻辑部分: 包括types,message以及portType元素.types元素中,xml schema用来定义组成消息的数据的结构.一定数量的消息元素用来定义服务所用消息的格式.portType元素包括

Android学习Scroller(五)——详解Scroller调用过程以及View的重绘

MainActivity如下: package cc.ww; import android.os.Bundle; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.RelativeLayout; import android.widget.RelativeLayout.LayoutParams; import android.app.Activity;