我想在不同的路径上在同一个Tomcat上部署多个版本的.war
。例如,我希望old.war
在/
上提供请求,然后new.war
在/new/
下提供请求。
war
将包含相同代码的不同版本,因此大多数是相同的包/类。这也意味着它们将服务于相同的端点,但自然具有不同的前缀(例如,当/someendpoint
请求时,它应该由old.war
提供,而当另一个提供给/new/someendpoint
时,它应该由new.war
)提供。
答案 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等等。然后,您就可以部署不同的版本并使用所有版本