JAX-WS服务和客户端版本控制

时间:2013-05-10 15:18:01

标签: version-control jax-ws ibm-rad

我的小组第一次进入网络服务。控制Web服务和客户端版本问题的常用方法是什么?我们使用它提供的向导在IBM的RAD中生成我们的服务和客户端。服务和客户运作良好,但我们想知道如何管理这些将成为一项任务。

- 如果服务发生变化,并且界面没有改变,我认为老客户永远不会知道差异并且可以正常工作。

- 如果服务更改为向参数添加新属性,那么较旧的客户端是否可以使用它而不需要设置该值?

- 人们如何处理Web服务的版本控制,因为它们的数量增长,使用客户端的应用程序数量增长了?这类事情的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

我们使用两种类型的版本控制。客户(公共)可见,非(私人)可见。这来自(您已经提到的)客户是否受到影响。

如果客户受到影响,例如更改XSD架构定义或WS更改的功能,客户端也必须修改其结束,我们更改公共版本。我们在WS上下文根中增加版本号,这意味着它将具有与先前版本不同的URL。还要确保代码存档(在我们的情况下是战争版本)也具有公共版本,以免覆盖以前的部署。

例如,我们称为foo的WS在公共版本2中。其URL为http://ourserver:8000/foo_2,war文件名为foo_2。我们修改了XSD Schema,因此客户端必须对更改做出反应。我们更新版本,现在URL为http://ourserver:8000/foo_3,war文件名为foo_3。以前的版本仍然存在,而客户端可以慢慢转换到新版本。

如果更改没有强制客户端执行任何操作,那么我们称之为私有版本控制。这通常与公共版本一起显示为项目名称的一部分。使用前面的示例,我们有一个WS foo,私有版本5和public 2.我们的服务项目名为WS_foo_2_5。我们现在更改存储传入数据的顺序。这不会影响客户端,因此我们更改了私有版本。实际上我们有项目WS_foo_2_6。我们从中创建一个名为foo_2的代码存档,并使用设置为http://ourserver:8000/foo_2的URL进行部署。这样我们就可以修改版本,而无需改变客户POV的任何内容。