WebService(三)

WSDL 的全称是 Web Services Description Language(Web 服务描述语言),用于描述 WS 的具体内容。当成功发布一个 WS 后,就能在浏览器中通过一个地址查看基于 WSDL 文档(基于xml的文档)

<wsdl:definitions xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://c.cxf.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="HelloServiceImplService" targetNamespace="http://c.cxf.com/">
    <wsdl:types>...</wsdl:types>
    <wsdl:message name="say">...</wsdl:message>
    <wsdl:message name="sayResponse">...</wsdl:message>
    <wsdl:portType name="HelloService">...</wsdl:portType>
    <wsdl:binding name="HelloServiceImplServiceSoapBinding" type="tns:HelloService">...</wsdl:binding>
    <wsdl:service name="HelloServiceImplService">...</wsdl:service>
</wsdl:definitions>

definitions 是 WSDL 的根节点,它包括两个重要的属性:
name:WS 名称,默认为“WS 实现类 + Service”,例如:HelloServiceImplService
targetNamespace:WS 目标命名空间,默认为“WS 实现类对应包名倒排后构成的地址”,例如:http://c.cxf.com/(包名为com.cxf.c)
提示:可以在 javax.jws.WebService 注解中配置以上两个属性值,但这个配置一定要在 WS 实现类上进行,WS 接口类只需标注一个 WebService 注解即可。

在 definitions 这个根节点下,有五种类型的子节点,它们分别是:
types:描述了 WS 中所涉及的数据类型
portType:定义了 WS 接口名称(endpointInterface)及其操作名称,以及每个操作的输入与输出消息
message:对相关消息进行了定义(供 types 与 portType 使用)
binding:提供了对 WS 的数据绑定方式
service:WS 名称及其端口名称(portName),以及对应的 WSDL 地址
其中包括了两个重要信息:

portName:WS 的端口名称,默认为“WS 实现类 + Port”,例如:HelloServiceImplPort
endpointInterface:WS 的接口名称,默认为“WS 实现类所实现的接口”,例如:HelloService
提示:可在 javax.jws.WebService 注解中配置 portName 与 endpointInterface,同样必须在 WS 实现类上配置。

如果说 WSDL 是用于描述 WS 是什么,那么 SOAP 就用来表示 WS 里有什么。

其实 SOAP 就是一个信封(Envelope),在这个信封里包括两个部分,一是头(Header),二是体(Body)。用于传输的数据都放在 Body 中了,一些特殊的属性需要放在 Header 中(下面会看到)。
一般情况下,将需要传输的数据放入 Body 中,而 Header 是没有任何内容的,看起来整个 SOAP 消息是这样的:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header/>
    <soap:Body>
        <ns2:sayResponse xmlns:ns2="http://c.cxf.com/">
            <return>hello yuruixin</return>
        </ns2:sayResponse>
    </soap:Body>
</soap:Envelope>

和HTTP 请求的 Request Header 与 Request Body异曲同工

本系列笔记学习对象为开源中国https://my.oschina.net/huangyong/blog

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值