如果我将war文件部署到Tomcat,例如 foo-bar-1.1.2.war ,我该如何部署它以便将其提取到 webapps / bar 且其URL根目录为 / bar / … ?
我的目的是将war文件及其版本信息保留在webapps服务器中,以便我知道安装了哪个版本,但覆盖了该应用程序的先前版本。
我可以使用PSI Probe部署war文件。这将允许我为Web应用程序指定目标上下文。但是,这意味着我将失去war文件名中的任何版本信息。
Tomcat将始终将war文件的内容提取到同名文件夹中(配置为部署war时(默认情况下,等等))。
您可以将其解压缩到您选择的文件夹名称。因此,如果将其中的内容解压缩foo.war到bar/手动调用的文件夹中,而不仅仅是将war拖放到web apps文件夹中,它将仍然加载该Web应用程序。
foo.war
bar/
但是,这完全没有必要,因为您可以通过覆盖应用程序的上下文根元素来指定应用程序的URL模式,而不会弄乱文件夹/ war文件名:
这通常是在Tomcat中设置的server.xml-但这种做法相当不受欢迎。相反,建议您context.xml在Web应用程序/ war文件的META-INF文件夹中使用:
server.xml
context.xml
<Context path="/bar" .../>
部署应用程序后,context.xml应将其复制到/conf/Catalina/localhost但重命名为foo.xml
/conf/Catalina/localhost
foo.xml
请注意,conext根必须是唯一的,并且如果您使用autoDeploy或deployOnStartup操作(源http://tomcat.apache.org/tomcat-7.0-doc/config/context.html),则还有一些其他注意事项。
autoDeploy
deployOnStartup
其他选项包括:
foo-1.1.0
foo/version1
您还可以使用Ant(或等效工具)来自动化您的部署(并执行以上任何一项操作)。