Имея часть 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 должен быть привязан к одному URL, где расположен веб-сервис. Однако если в классе есть несколько методов, каждый из этих методов доступен по одному и тому же URL-адресу = это необходимо для привязки, поэтому его можно определить в одном элементе portType.
Я что-то здесь упускаю? Или это означает, что если я объявляю 2 операции в одном PortType, то операции всегда вызываются в одно и то же время / после других? Итак, у меня есть 2 portTypes, каждый из которых имеет одинаковую привязку, но первый portType определяет последовательность операций, вызываемых после друг друга?
Спасибо за помощь