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>