Java Tomcat使用配置(而不是war名称)设置应用程序上下文

Java Tomcat使用配置(而不是war名称)设置应用程序上下文,java,tomcat,Java,Tomcat,我的问题是,假设我有一个名为My-app-123.war的war文件。我想在Tomcat服务器(9.0.x)上部署它,让它自动解包 然后,应用程序就可以通过 有没有一种方法可以在不重命名war文件的情况下使应用程序可以从中访问 我会在前面说,我意识到最简单的解决方案就是给war文件命名。我很好奇在Tomcat配置中是否有这样做的方法。 我已经这样做了(在我的server.xml文件的host部分中): 但我在path变量描述中在线阅读了以下内容: 即使在server.xml中静态定义上下文,

我的问题是,假设我有一个名为My-app-123.war的war文件。我想在Tomcat服务器(9.0.x)上部署它,让它自动解包

然后,应用程序就可以通过

有没有一种方法可以在不重命名war文件的情况下使应用程序可以从中访问

我会在前面说,我意识到最简单的解决方案就是给war文件命名。我很好奇在Tomcat配置中是否有这样做的方法。

我已经这样做了(在我的server.xml文件的host部分中):


但我在path变量描述中在线阅读了以下内容:

即使在server.xml中静态定义上下文,也不能设置此属性,除非docBase不位于主机的appBase下,或者deployOnStartup和autoDeploy都为false。如果不遵循此规则,可能会导致双重部署


我现在可以在和访问该应用程序,这不是一个真正的解决方案。

以下内容适用于我使用过的Tomcat部署-没有双重部署问题

在这里使用的示例中,我在
TomcatDemo-1.0-SNAPSHOT.war
中有一个简单的“helloworld”webapp。它部署在Tomcat 9.0的标准位置(
webapps
目录)

我希望应用程序的上下文路径为
/myfooapp

我在
server.xml
中使用以下上下文条目:

<Context path="/my-foo-app" docBase="TomcatDemo-1.0-SNAPSHOT.war"></Context>
<Host name="localhost" 
      appBase="webapps" 
      deployOnStartup="true"
      deployIgnore="TomcatDemo-1.0-SNAPSHOT.war" 
      unpackWARs="true" 
      autoDeploy="false">
这里的重要项目是
deployIgnore
。这里描述的是:

使用自动部署时,由XML上下文文件定义的docBase应该位于appBase目录之外。如果不是这样,部署web应用程序可能会遇到困难,或者应用程序可能会部署两次。deployIgnore属性可用于避免这种情况

或者,如果您不介意自动启动部署,可以设置
deployOnStartup=“false”
——在这种情况下,您不需要
deployIgnore

在这些场景中,web应用程序仅在以下位置可用:

http://localhost:8080/my-foo-app/   <-- OK
希望有帮助

最后,它可能会变得有点复杂,有各种各样的自动部署选项。本页提供了一组汇总表和说明:


我使用过的Tomcat部署可以使用以下方法—不存在双重部署问题

在这里使用的示例中,我在
TomcatDemo-1.0-SNAPSHOT.war
中有一个简单的“helloworld”webapp。它部署在Tomcat 9.0的标准位置(
webapps
目录)

我希望应用程序的上下文路径为
/myfooapp

我在
server.xml
中使用以下上下文条目:

<Context path="/my-foo-app" docBase="TomcatDemo-1.0-SNAPSHOT.war"></Context>
<Host name="localhost" 
      appBase="webapps" 
      deployOnStartup="true"
      deployIgnore="TomcatDemo-1.0-SNAPSHOT.war" 
      unpackWARs="true" 
      autoDeploy="false">
这里的重要项目是
deployIgnore
。这里描述的是:

使用自动部署时,由XML上下文文件定义的docBase应该位于appBase目录之外。如果不是这样,部署web应用程序可能会遇到困难,或者应用程序可能会部署两次。deployIgnore属性可用于避免这种情况

或者,如果您不介意自动启动部署,可以设置
deployOnStartup=“false”
——在这种情况下,您不需要
deployIgnore

在这些场景中,web应用程序仅在以下位置可用:

http://localhost:8080/my-foo-app/   <-- OK
希望有帮助

最后,它可能会变得有点复杂,有各种各样的自动部署选项。本页提供了一组汇总表和说明: