如何在 java war 文件中的 META-INF/context.xml 内的 Tomcat 8 上指定 "Context path"?

How can I specify "Context path" on Tomcat 8 inside META-INF/context.xml in java war file?

如何将 mywebapp-1.0.0.war 部署到 $TOMCAT_HOME/webapps 目录,上下文路径为 /mywebapp 在 Tomcat 8 上的 war 文件中使用 context.xml?

自版本 5 以来很长一段时间后,我又开始使用 Tomcat。我习惯于在我的 war 文件中创建 META-INF/context.xml :

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/mywebapp">
  ...
</Context>

Maven 使用此名称创建一个 war 文件:mywebapp-1.0.0.war

但是当我将 war 文件部署到 $TOMCAT_HOME/webapps 目录时,上下文路径将为 http://localhost:8080/mywebapp-1.0.0 instead of http://localhost:8080/mywebapp/.

我还看到 $TOMCAT_HOME/conf/Catalina/localhost 是空的,而不是从部署的 war 文件复制 xml 文件。

我还添加到 $TOMCAT_HOME/conf/server.xml deployXML="true"

 <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true" 
        deployXML="true">

您不能将 war 文件重命名为 mywebapp(通过 Maven 或其他方式)以便 Tomcat 将其部署在 /mywebapp 下吗?

无法将 war 放入 webapp 目录并在 [=18] 中设置 path 属性=].xml 文件同时。 Tomcat 8 documentation, 明确说明这个属性:

This attribute must only be used when statically defining a Context in server.xml. In all other circumstances, the path will be inferred from the filenames used for either the .xml context file or the docBase.

感谢您对 j2gl 的研究! 我发现如何使用 Tomcat 管理器 API 来实现带有版本全名和已部署短路径的 .war 文件的好方法。例如通过 Tomcat7-maven-plugin.