Java WSDL抽象与具体消息

Java WSDL抽象与具体消息,java,web-services,wsdl,Java,Web Services,Wsdl,我正在学习关于抽象信息和具体信息的定义,并遇到了这些定义: 消息定义始终被视为抽象定义 消息内容的名称。消息绑定描述了抽象 内容被映射成具体的格式 但是,在某些情况下,抽象定义可能与一个或多个绑定的具体表示非常接近或完全匹配,因此这些绑定将提供 很少或没有映射信息 但是,同一消息定义的另一个绑定可能需要广泛的映射信息。因此,只有在检查绑定之后,才能 确定消息的“抽象程度” 请帮助我理解上面的定义是什么意思?你能提供一些同样的例子吗 当我们在WSDL术语中将消息称为Abstract时,以及当它在W

我正在学习关于抽象信息和具体信息的定义,并遇到了这些定义:

消息定义始终被视为抽象定义 消息内容的名称。消息绑定描述了抽象 内容被映射成具体的格式

但是,在某些情况下,抽象定义可能与一个或多个绑定的具体表示非常接近或完全匹配,因此这些绑定将提供 很少或没有映射信息

但是,同一消息定义的另一个绑定可能需要广泛的映射信息。因此,只有在检查绑定之后,才能 确定消息的“抽象程度”

请帮助我理解上面的定义是什么意思?你能提供一些同样的例子吗


当我们在
WSDL
术语中将消息称为
Abstract
时,以及当它在
WSDL
术语中将被称为
concrete
时?

Abstract WSDL包含没有传输协议的消息

具体的WSDl是抽象的WSDl加上传输协议


传输协议可以是
JMS
HTTP

消息部分被认为是抽象的,因为它没有真正定义实际SOAP消息的内容格式。请看一看哪一个在呈现WSDL中可用绑定样式之间的差异方面做得很好

以本文中的示例为例,WSDL契约应该定义一个类似于
public void myMethod(intx,float y)的方法您可以在WSDL契约中声明类似的内容:

<message name="myMethodRequest">
    <part name="x" type="xsd:int"/>
    <part name="y" type="xsd:float"/>
</message>
<message name="empty"/>

<portType name="PT">
    <operation name="myMethod">
        <input message="myMethodRequest"/>
        <output message="empty"/>
    </operation>
</portType>

<binding .../>
每种方法都有其优点和缺点——因此,请查看IBM文章以了解更多信息。由于限制和弱点,
RPC/encoded
RPC/literal
document/literal bare
并不经常使用,而是使用了对document/literal的修改--
document/literal wrapped
。在这里,所有样式的优点都集中在一个样式中,这有其进一步的限制,即消息只允许使用一个
元素:

<types>
    <schema>
        <element name="myMethod">
            <complexType>
                <sequence>
                    <element name="x" type="xsd:int"/>
                    <element name="y" type="xsd:float"/>
                </sequence>
            </complexType>
        </element>
        <element name="myMethodResponse">
            <complexType/>
        </element>
    </schema>
</types>
<message name="myMethodRequest">
    <part name="parameters" element="myMethod"/>
</message>
<message name="empty">
    <part name="parameters" element="myMethodResponse"/>
</message>

<!-- again same port type -->

<binding ... />

HTH

回答得好!有很多细节。
<soap:envelope>
    <soap:body>
        <myMethod>
            <x>5</x>
            <y>5.0</y>
        </myMethod>
    </soap:body>
</soap:envelope>
<soap:envelope>
    <soap:body>
        <xElement>5</xElement>
        <yElement>5.0</yElement>
    </soap:body>
</soap:envelope>
<types>
    <schema>
        <element name="xElement" type="xsd:int"/>
        <element name="yElement" type="xsd:float"/>
    </schema>
</types>

<message name="myMethodRequest">
    <part name="x" element="xElement"/>
    <part name="y" element="yElement"/>
</message>
<message name="empty"/>

<!-- same port type -->
<portType name="PT">
    ...

<binding ... />
<types>
    <schema>
        <element name="myMethod">
            <complexType>
                <sequence>
                    <element name="x" type="xsd:int"/>
                    <element name="y" type="xsd:float"/>
                </sequence>
            </complexType>
        </element>
        <element name="myMethodResponse">
            <complexType/>
        </element>
    </schema>
</types>
<message name="myMethodRequest">
    <part name="parameters" element="myMethod"/>
</message>
<message name="empty">
    <part name="parameters" element="myMethodResponse"/>
</message>

<!-- again same port type -->

<binding ... />
<soap:envelope>
    <soap:body>
        <myMethod>
            <x>5</x>
            <y>5.0</y>
        </myMethod>
    </soap:body>
</soap:envelope>
<binding type="glossaryTerms" name="b1">
   <soap:binding style="document"
   transport="http://schemas.xmlsoap.org/soap/http" />
   <operation>
     <soap:operation soapAction="http://example.com/getTerm"/>
     <input><soap:body use="literal"/></input>
     <output><soap:body use="literal"/></output>
  </operation>
</binding>