具有WSDL的一部分:
<?xml version="1.0" encoding="utf-8"?>
<definitions
xmlns="http://schemas.xmlsoap.org/wsdl/"
targetNamespace="http://mimdw.fit.cvut.cz/mdw_examples/ProcessOrder/OrderProcess"
xmlns:om="xmlns:om="http://mimdw.fit.cvut.cz/mdw-examples/cdm/order"
xmlns:tns="http://mimdw.fit.cvut.cz/mdw_examples/ProcessOrder/OrderProcess">
name="OrderProcess"
...
</definitions>
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="unqualified"
elementFormDefault="qualified"
xmlns:op="http://mimdw.fit.cvut.cz/mdw-examples/cdm/order"
targetNamespace="http://.../mdw_examples/ProcessOrder/OrderProcess">
<import
namespace="http://mimdw.fit.cvut.cz/mdw-examples/cdm/order"
schemaLocation="http://.../soa-infra/services/mdw-examples/ProcessOrder/apps/MDWMetaData/order.xsd"/>
<element name="OrderProcessRequest" type="op:Order"/>
<element name="OrderProcessResponse" type="string"/>
<element name="StatusRequest" type="op:StatusRequestType"/>
<element name="FaultMessage" type="string"/>
<complexType name="StatusRequestType">
<sequence>
<element name="process-id" type="string"/>
</sequence>
</complexType>
<element name="StatusResponse" type="op:StatusResponseType"/>
<complexType name="StatusResponseType">
<sequence>
<element name="process-id" type="string"/>
<element name="status" type="string"/>
</sequence>
</complexType>
<!-- [snip] -->
</schema>
</types>
<message name="OrderProcessRequestMessage">
<part name="order" element="op:OrderProcessRequest"/>
</message>
<message name="OrderStatusResponseMessage">
<part name="status" element="op:StatusResponse"/>
<message>
<message name="OrderProcessFaultMessage">
<part name="text" element="op:FaultMessage"/>
<message>
<message name="OrderProcessResponseMessage">
<part name="result" element="op:OrderProcessResult"/>
<message>
<portType name="OrderProcess">
<operation name="processOrder">
<input message="op:OrderProcessRequestMessage"/>
<output message="op:OrderStatusResponseMessage"/>
</operation>
<operation name="getStatus">
<input message="op:OrderStatusRequestMessage"/>
<output message="op:OrderStatusResponseMessage"/>
<operation>
</portType>
<portType name="OrderProcessCallback">
<operation name="processOrderResponse">
<input message="op:OrderProcessResponseMessage"/>
<fault message="op:OrderProcessFaultMessage"/>
<operation>
</portType>
端口类型定义了可以调用的操作。
但是,此xml部分由2个元素组成,其中一个包含两个操作。为什么我们需要2个portType元素?如果我没记错的话,每个PortType都需要绑定到Web服务所在的一个URL上。但是,如果类上有多个方法,则每个方法都可在同一url上使用=绑定时需要,因此可以在一个portType元素中定义。
我在这里想念什么吗?还是意味着,如果我在一个PortType中声明2个操作,那么这些操作总是总是在同一时间/之后互相调用?所以我有2个portType,每个都有相同的绑定,但是第一个portType定义了彼此之后调用的操作序列?
感谢帮助