向SOAP中的现有输出数据类型添加新字段的变通方法

时间:2013-02-20 19:57:52

标签: soap jax-ws

根据this article about backwards compatibility in SOAP by IBM,他们声明在不违反合同的情况下无法将新字段添加到输出类型。页面中的相关剪辑来自标题为现有数据类型中的新可选字段的部分...

  

只要您将元素设为可选元素(使用minOccurs =“0”属性),就可以向现有的complexType添加元素。不过要小心。添加可选元素只有在接收到其封闭的complexType作为新服务的输入时才会发生微小变化。 新服务无法返回带有新字段的complexType。如果旧客户端收到新字段,客户端反序列化将失败,因为客户端不知道新字段字段。

这是在2004年为WSDL 1.1规范编写的。根据WSDL 1.2规范,这仍然是正确的吗?是否无法为新的未知字段定义“忽略”的默认行为?这个陈述似乎也是特定于实现的,或者是符合规范的吗?

我正在努力解决发展返回复杂业务对象的SOAP服务的问题。当消费者找到它们的用例时,将添加新字段。我想避免为了简单地添加新字段而保留N版本的服务。

1 个答案:

答案 0 :(得分:2)

从我个人的经验来看,情况仍然如此。我认为您主要关注的是版本控制方法。您可以查看:http://www.ibm.com/developerworks/webservices/library/ws-version/,或更接近家Web Services API Versioning