在Tomcat 7中设置默认应用程序

15

我已经浏览了描述如何在Tomcat中将给定的WAR(例如abc.war)配置为默认Web应用程序的线程。

要么

将abc.war重命名为ROOT.war

要么

在${tomcat.home}/conf/Catalina/localhost中创建一个路径为"",docBase设置为WAR的相对/绝对路径的上下文ROOT.xml(将abc.war保留在webapps之外以避免双重部署)。

这两个解决方案都会导致在webapps(appBase)目录中出现ROOT.war。但是,我想要保留WAR名称(abc.war)在webapps中,而不是有一个单独的ROOT.war来实现这一点。

在我的情况下,一个可行的解决方案是在server.xml中的<Host>标签下添加上下文。但是根据Tomcat 7 Doc,不建议直接在server.xml中添加上下文。

有人能指向一个替代方案吗?

谢谢。


我在server.xml的Host标签中使用了<Context path="" docBase="abc"/>。 - Manish Mulani
1
请参考以下链接:http://wiki.apache.org/tomcat/HowTo#How_do_I_make_my_web_application_be_the_Tomcat_default_application.3F,您可以获得完整的答案。 - madhu
请查看以下网址 https://dev59.com/JG035IYBdhLWcg3wE71s - Monsif EL AISSOUSSI
对于任何遇到此问题的人,请尝试此方法(它对我有效):https://dev59.com/5WDVa4cB1Zd3GeqPZxnQ#9162565 - VietDD
1个回答

20

详细方法

第一种方法:

首先关闭你的Tomcat(从bin目录中运行sh shutdown.sh),然后你需要删除tomcat webapps文件夹中的所有内容(rm -fr *),接着将你的WAR文件重命名为ROOT.war,最后启动你的Tomcat(从bin目录中运行sh startup.sh)。

第二种方法:

将war文件以原始名称保存在CATALINA_BASE/webapps目录下,关闭server.xml文件中Host元素中的autoDeploy和deployOnStartup选项。在server.xml文件中明确定义所有应用程序上下文,指定路径和docBase。必须这样做,因为你已经禁用了所有Tomcat自动部署机制,除非在server.xml文件中找到它们的上下文,否则Tomcat不会再部署你的应用程序。

注意:

最后一种方法还意味着为了对任何应用程序进行更改,你必须停止并重新启动Tomcat。

第三种方法:

将war文件放在CATALINA_BASE/webapps之外(它必须在外部以防止重复部署)。 - 在CATALINA_BASE/conf/中放置一个名为ROOT.xml的上下文文件。此上下文文件中的单个元素必须具有指向war文件位置的docBase属性。路径元素不应设置-它是从.xml文件的名称派生的,在这种情况下是ROOT.xml。有关详细信息,请参见上面的上下文容器。


1
请注意,使用第三种方法时,假设您已经保留了server.xml中的默认设置,war文件将不会部署到webapps文件夹中。此外,如果您有myApp.war并且希望上下文根为/foo/bar,则应将xml文件命名为foo#bar.xml。 - Striker
1
我尝试了您的第三个解决方案,但对我没有用。我的应用程序名称是springExample,我将其放在C:\ Tomcat \ springExample.war下面,就像提到的那样,放在webapps DIR之外。然后我在C:\ Tomcat \ conf \ Catalina \ localhost \ ROOT.xml中创建了一个ROOT.xml文件。ROOT.xml的内容是<?xml version="1.0"?> <Context reloadable="true" path="" docBase="springExample"/>。然后重新启动服务器。请告诉我我做错了什么。 - Vaibhav Jain
1
我成功地将它工作起来了,方法是将 docBase 属性值更改为 <Context reloadable="true" path="" docBase="C:\Tomcat\springExample"/>。但是现在你能告诉我 Tomcat 正从哪里提取这个 war 文件吗?并且它能通过 Tomcat 应用管理器 Web 界面 进行管理吗?谢谢。 - Vaibhav Jain
如果我们能够为第二个和第三个解决方案提供设置示例,那将会非常有帮助。 - JaskeyLam
1
为第三种方法添加一个示例。 - Sumodh S
@SumodhS 这很容易理解,不是吗?提供完整的示例可能有些牵强。 - TheWhiteRabbit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接