wsdl结构和多个portType元素

时间:2019-01-13 12:23:38

标签: java web-services wsdl

具有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定义了彼此之后调用的操作序列?

感谢帮助

0 个答案:

没有答案