构建多个Web服务版本的源代码

时间:2009-10-06 03:34:49

标签: web-services jax-ws

当同一源代码主干或分支中存在多个同一Web服务版本时,是否存在构造源代码的约定?

这是我们的情况。

我们通过在wsdl URL中包含版本号来对我们的Web服务进行版本化,如下所示:

url/project/1.0/WebServiceA?wsdl

我将部署版本1.1的WebServiceA以及版本1.0,因此1.0的用户不必更改任何内容。 WebServiceA的1.0和1.1版将有自己独立的Java类。

我想在同一个.war文件中部署这两个版本。 (我们可以在.war中采用只有一个版本的Web服务的策略,并在自己的.war中部署其他版本。当我们获得多个版本的多个Web服务时,这将导致部署的war数量增加。我宁愿只部署一个.war。)

我认为我们应该为各种版本使用单独的包结构:

com.company.dept.ws.WebServiceA  (version 1.0)
com.company.dept.ws.v11.WebServiceA  (version 1.1)

com.company.dept.ws.WebServiceB  (version 1.0)
com.company.dept.ws.v11.WebServiceB  (version 1.1)
com.company.dept.ws.v12.WebServiceB  (version 1.2)

ws。,ws.v11。和ws.v12下的Java类。将是单独的Java类。

您可以通过此惯例看到任何问题吗?

如果有一个经过验证的惯例来构建多个版本的Web服务代码的源代码,我想在构建自己的代码之前先了解它。

感谢。

迪安

1 个答案:

答案 0 :(得分:0)

既然你说你希望这些版本都“在同一个源代码主干或分支中”,我认为部分答案取决于你正在使用的源代码控制系统,以及你是否计划修复bug旧版本。

如果您想修复旧版本中的错误,您可能希望能够在不同版本之间向前或向后集成更改。例如,假设您发现了版本1.0,1.1和1.2中存在的严重安全问题。你不会想要修复它3次。大多数源代码控制系统都允许您在相关分支之间进行这种集成。有些(比如Perforce,我相信git,可能还有其他一些)会让你在文件中集成更改,即使在分支内也是如此。 (实际上,Perforce的“分支”概念只是记录文件间集成的便利)

因此,您需要考虑是否需要进行这些类型的多版本修复,如果是这样,您的控制系统是否可以处理分支内集成。如果没有,那么你可能最好为每个版本使用一个单独的分支。