第五十三章 生成的 WSDL 的详细信息 - service
检查 WSDL 时,从尾到头阅读它很有用。
WSDL 中的最后一个元素是 <service> 元素,它定义 Web 服务。对于本主题前面显示的示例 Web 服务,此元素如下:
<service name="MyServiceName">
<port name="MyServiceNameSoap" binding="s0:MyServiceNameSoap">
<soap:address location="https://devsys:52773/csp/mysamples/WSDLSamples.BasicWS.cls"/>
</port>
</service>
该元素指定如下:
-
Web服务的SERVICENAME参数用作<service>元素的name属性。请参阅指定Web服务的服务名称和命名空间。此参数还会影响
<port>元素的名称和绑定属性;没有提供单独的控制。 -
binding属性引用s0命名空间中的绑定,该命名空间在命名空间声明中列出。此命名空间由Web服务的NAMESPACE参数指定。 -
Web服务类的URL控制<soap:address>元素的位置属性。
<binding>
在<service> 元素之前,WSDL 包含 <binding> 元素,每个元素定义由特定 <portType> 元素定义的操作和消息的消息格式和协议详细信息。
一般来说,WSDL 可以包含多个 <binding> 元素,但 IRIS Web 服务的 WSDL 只包含一个。
对于本主题前面显示的示例 Web 服务,此元素如下:
<binding name="MyServiceNameSoap" type="s0:MyServiceNameSoap">
<soap:binding transport="https://schemas.xmlsoap.org/soap/http"
style="document"/>
<operation name="Add">
<soap:operation soapAction="https://www.mynamespace.org/WSDLSamples.BasicWS.Add"
style="document"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
该元素指定如下:
<binding>元素的name属性自动与<service>元素保持一致(并且改变没有任何意义)。
<binding name="MyServiceNameSoap" ...
<binding>元素的type属性引用s0命名空间中的<portType>元素,该元素在命名空间声明中列出。此命名空间由Web服务的NAMESPACE参数指定。- 每个
<operation>元素的名称属性均基于Web方法的名称(并且更改没有意义)。
<operation name="Add"> ...
- 如果为
Web方法指定SoapAction关键字,则该值将用于操作的soapAction属性。例如:
...xml
<operation name="Add">
<soap:operation soapAction="mysoapaction" style="document"/>
...
-
如果方法的返回类型定义为
%SOAP.OneWay,则将影响此元素,如单向Web方法的WSDL差异中所述。 -
如果
Web服务的SOAPBINARY参数为1,则会影响此元素,如IRIS二进制SOAP格式的WSDL差异中所述。 -
如果
Web服务的SOAPSESSION参数为1,则会影响此元素,如IRIS SOAP会话的WSDL差异中所述。SoapBindingStyle类关键字、`` 方法关键字和 SoapBindingStyle 查询关键字会影响<binding>元素,如类定义参考中所述。这些关键字可以具有值document和rpc。 -
SoapBodyUse类关键字、SoapBodyUse方法关键字和SoapBodyUse查询关键字会影响<binding>元素,如类定义参考中所述。这些关键字可以具有值literal和coded。
注意:如果 Web 服务具有已编译的策略配置类,则 <binding> 部分还包含 <wsp:Policy>. 形式的元素。本文档不讨论策略如何影响 WSDL,因为效果由 WS-SecurityPolicy 和其他规范决定。