Java Tomcat使用配置(而不是war名称)设置应用程序上下文
我的问题是,假设我有一个名为My-app-123.war的war文件。我想在Tomcat服务器(9.0.x)上部署它,让它自动解包 然后,应用程序就可以通过 有没有一种方法可以在不重命名war文件的情况下使应用程序可以从中访问 我会在前面说,我意识到最简单的解决方案就是给war文件命名。我很好奇在Tomcat配置中是否有这样做的方法。 我已经这样做了(在我的server.xml文件的host部分中):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中静态定义上下文,
但我在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
希望有帮助
最后,它可能会变得有点复杂,有各种各样的自动部署选项。本页提供了一组汇总表和说明: