我可以在不同的路径上部署同一战争的不同版本吗?

时间:2015-03-06 09:44:51

标签: tomcat

我想在不同的路径上在同一个Tomcat上部署多个版本的.war。例如,我希望old.war/上提供请求,然后new.war/new/下提供请求。

war将包含相同代码的不同版本,因此大多数是相同的包/类。这也意味着它们将服务于相同的端点,但自然具有不同的前缀(例如,当/someendpoint请求时,它应该由old.war提供,而当另一个提供给/new/someendpoint时,它应该由new.war)提供。

2 个答案:

答案 0 :(得分:3)

简单的答案是肯定的。将它们命名为ROOT.war和new.war。

使用ROOT.war时会变得复杂,因为所有url引用都包含空上下文

<强> someserver / someendpoint

但new.war将在所有路径中都有“新”

<强> someserver /新/ someendpoint

我的方法是始终对应用程序使用相对url引用,或者使用服务器为应用程序设置应用程序作用域变量,然后使用

servletContext.setAttribute("cp", contextPath);
生成的网址中

$ {cp} / someendpoint

如果您不使用ROOT.war,而是使用old.war和new.war,则会更容易。

答案 1 :(得分:1)

是的,绝对可以。唯一需要注意的是战争的两个名称应该是平等的。

一个好的策略是在战争中使用命名约定。比如说:project_0_0_1.war,下一个是project_0_0_2.war等等。然后,您就可以部署不同的版本并使用所有版本