我所做的大部分工作都是使用RESTful Web服务,但我们的一位客户拥有传统的SOAP接口。我们是一家Java商店,目前正在向Grails迁移并支持他们的旧SOAP服务,我们正在为我们的增强功能添加“自定义”开发。
基本上,他们的WSDL包含多个具有相同名称的操作,这些操作引用了不同的方法。这会导致我想使用的库出现问题,因为它们不支持重载。所以我一直在修改他们的WSDL以使事情发挥作用,每次我们添加新方法或进行更改时,我都会调整清理WSDL来删除重载操作。
示例:
<wsdl:operation name="GetOrder">
<wsdl:input message="tns:GetOrderSoapIn" />
<wsdl:output message="tns:GetOrderSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetOrder">
<wsdl:input name="GetByAlternateOrderID" message="tns:GetByAlternateOrderIDSoapIn" />
<wsdl:output name="GetByAlternateOrderID" message="tns:GetByAlternateOrderIDSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetOrder">
<wsdl:input name="GetOrderByID" message="tns:GetOrderByIDSoapIn" />
<wsdl:output name="GetOrderByID" message="tns:GetOrderByIDSoapOut" />
</wsdl:operation>
我想提供一些好的文章和文档,说明为什么他们应该更新他们的WSDL,并且如果他们不这样做,也要证明我们需要的额外工作。仅仅告诉他们似乎还不够。我相信他们应该能够毫不费力地修改他们的WSDL,但没有专业知识告诉他们如何或为什么。
关于何时删除重载以及为什么会导致当前工具出现问题的哪些好参考?
答案 0 :(得分:2)
WSDL 1.2 / 2.0标准中的WSDL工作组删除操作重载(存在于WSDL 1.1中)应该清楚地表明此功能存在问题。< / p>
请参阅:
答案 1 :(得分:1)
相关文件可能是http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html。这禁止了WSDL 1.0中理论上可能存在的许多事情,许多工具包(例如Apache CXF)仅支持本文档允许的内容。
答案 2 :(得分:0)
SOAP允许重载:
来自http://www.openlaszlo.org/lps4/docs/developers/rpc-soap.html#d0e118894
SOAP规范允许 重载操作,即 包含相同名称的方法 有不同的参数。这个 与Javascript创建不匹配, 这不允许超载 方法