繁体   English   中英

使用不同的路径将war文件部署到Tomcat

[英]Deploying war file to Tomcat with a different path

如果我将war文件部署到Tomcat,例如foo-bar-1.1.2.war ,我该如何部署它以便将其解压缩到webapps / bar并且其URL根目录为/ bar / ...

我的目的是将war文件保存在webapps服务器及其版本信息中,以便我知道安装了哪个版本,但是它会覆盖以前版本的应用程序。

我可以使用PSI Probe部署war文件。 这将允许我为Web应用程序指定目标上下文。 但是,这意味着我将丢失war文件名中的任何版本信息。

Tomcat将始终将war文件的内容提取到同名文件夹(当它配置为部署战争时 - 默认等)。

您可以将其解压缩到您选择的文件夹名称。 因此,如果您将foo.war的内容解压缩到名为bar/ foo.war的文件夹,而不是仅仅将war放入web apps文件夹,它仍然会加载Web应用程序。

但是,这是完全没必要的,因为您可以通过覆盖应用程序的上下文根元素来指定应用程序的URL模式而不会弄乱文件夹/ war文件名:

这通常在Tomcat server.xml设置 - 但是这种做法相当普遍。 相反,我建议你在web应用程序/ war文件的META-INF文件夹中使用context.xml

<Context path="/bar" .../>

部署应用程序时,应将context.xml复制到/conf/Catalina/localhost但重命名为foo.xml

请注意,如果您使用autoDeploydeployOnStartup操作(来源http://tomcat.apache.org/tomcat-7.0-doc/config/context.html ),则conext根必须是唯一的,还有一些其他注意事项。


其他选择包括:

  • 清理每个部署的Web应用程序文件夹,然后放弃新的foo-1.1.0战争。
  • 在平面文件中包含版本号。 foo/version1
  • 或者只是将版本包含在config / XML文件中。

您还可以使用Ant(或等效工具)自动部署(并执行上述任何操作)。

有一点需要强调上下文片段定义的path属性。 引用有关该主题文档

当主机执行autoDeploy或deployOnStartup操作时,Web应用程序的名称和上下文路径是从定义Web应用程序的文件的名称派生的。

deployOnStartup 是Tomcat主机的默认行为

要遵循文档,这有一个非常重要的后果:

可能未META-INF/context.xml定义上下文路径

根据定义Tomcat上下文的方式 ,这只允许两个解决方案:

  • In individual files (with a ".xml" extension) in the $CATALINA_BASE/conf/[enginename]/[hostname]/ directory
  • Inside a Host element in the main conf/server.xml ,这是生产环境中的一个不鼓励的解决方案,因为它需要重新启动服务器

另一种解决方案利用了unpackWARs属性

在我看来,由于这些原因,在生产环境中实现细微路径的一般而简单的方法是利用war文件的命名 (可能包括版本管理和解决您的问题)。 war文件名中的单个sharp(例如test#path.war )意味着上下文路径中的一个段(例如/ test / path )。 双锐引入版本号(例如test#path ## 112.war )。 无论是否解压缩war文件,热部署是否与部署无关(管理器或文件系统)并管理同一存档的多个版本,这都有效。

但是如果需要有一个与存档名称不同的路径,似乎唯一的解决方案是/conf/[enginename]/[hostname]/目录或server.xml文件中的描述符。 对于这些,您需要访问服务器文件系统。

相关解决方案与Tomcat在日常工作中的配置和管理方式密切相关。

如果您只想在war文件名中包含版本信息,可以将其命名为: my-app##1.2.3.war 它被解压缩到目录my-app##1.2.3但上下文将只是my-app (即http:// host / my-app / )。

至少与Tomcat 7.0.55一起使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM