структура wsdl и несколько элементов portType - PullRequest
0 голосов
/ 13 января 2019

Имея часть 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 определяет последовательность операций, вызываемых после друг друга?

Спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...