假设由Web服务调用的过程执行的操作等同于void
方法,它是否始终返回值?
答案 0 :(得分:0)
从WSDL的角度来看,您有两个选择:
1:
<wsdl:types>
...
<xs:element name="method1" type="x:MyType1" />
...
<wsdl:message name="msg1_1">
<wsdl:part name="input" element="tns:method1" />
</wsdl:message>
<wsdl:portType name="MyInterface">
<wsdl:operation name="method1">
<wsdl:input name="req" message="tns:msg1_1" />
</wsdl:operation>
...
2:
<wsdl:types>
...
<xs:element name="method2" type="x:MyType2" />
<xs:element name="method2Response">
<xs:complexType>
<xs:sequence />
</xs:complexType>
</xs:element>
...
<wsdl:message name="msg2_1">
<wsdl:part name="input" element="tns:method2" />
</wsdl:message>
<wsdl:message name="msg2_1">
<wsdl:part name="output" element="tns:method2Response" />
</wsdl:message>
<wsdl:portType name="MyInterface">
<wsdl:operation name="method2">
<wsdl:input name="req" message="tns:msg2_1" />
<wsdl:output name="res" message="tns:msg2_2" />
</wsdl:operation>
...
使用选项1
,您可以获得单向操作,这有时可能是一个问题,因为客户端的调用返回时并不知道如何同意服务器端方法。< / p>
使用选项2
,您可以正常请求 - 响应操作,您只需获得(几乎)空的SOAP响应。
(以上所有示例都使用 document / literal / wrapped 约定)
从实施的角度来看,如果您使用例如使用JAX-WS的Apache CXF最终会得到标准的,返回void的方法。