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

标签 java tomcat servlets tomcat6

如果我将一个 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 应用程序文件夹中,它仍然会加载网络应用程序。

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

这通常在 Tomcat server.xml 中设置 - 但这种做法被广泛反对。相反,我建议您在 Web 应用程序/war 文件的 META-INF 文件夹中使用 context.xml:

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

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

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


其他选项包括:

  • 在每次部署时清理 web 应用程序文件夹,然后将新的 foo-1.1.0 war 放入其中。
  • 在平面文件中包含版本号。 foo/version1
  • 或者简单地将版本包含在配置/XML 文件中。

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

关于java - 使用不同的路径将war文件部署到Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9517182/

相关文章:

java - 在多模块 Maven 项目中注入(inject) Autowiring 字段失败 - NoSuchBeanDefinitionException

java 。 getClass() 返回一个类,我怎么也能得到一个字符串呢?

apache - Apache和Tomcat的负载均衡配置

java - 当浏览器关闭时,如何让 Spring 生成的 cookie 过期?

java - Spring Framework 5 中 Guava 的支持下降是什么意思?

java - 自定义hyperjaxb3生成实体的表名?

java - 测试 cxf 示例项目 java_first_spring_support 是否有效

java - 地址已在使用 ["ajp-nio-1099"]

java - 使用相同 Servlet 的多个用户会覆盖彼此的变量吗?

java - jboss url 形式的 servlet