问题描述
我已经浏览了描述如何在 tomcat 中将给定 WAR(例如 abc.war)配置为默认 Web 应用程序的线程.
I've gone through the threads that describe how to configure a given WAR (say abc.war) as default web-app in tomcat.
要么
将 abc.war 重命名为 ROOT.war
或
在 ${tomcat.home}/conf/Catalina/localhost 中创建一个上下文 ROOT.xml,其中 path="" 并且 docBase 设置为战争的相对/绝对路径(保留 abc.war避免双重部署).
这两种解决方案都会在 webapps (appBase) 目录中生成 ROOT.war.但是我想在 webapps 中保留 WAR 名称 (abc.war) 并且没有单独的 ROOT.war 来实现这一点.
Both the solutions result in ROOT.war in webapps (appBase) directory. However I want to retain the WAR name (abc.war) in webapps and not have a separate ROOT.war to achieve this.
在我的案例中有效的一种解决方案是在 <Host> 下添加上下文.server.xml 中的标记.但根据 Tomcat 7 Doc ,不建议添加上下文直接在 server.xml 中.
One solution that worked in my case was adding a context under <Host> tag in server.xml . But as per Tomcat 7 Doc , it's not recommended to add context directly in server.xml.
有人能给我指出替代方案吗?
Could someone point me to an alternative?
谢谢.
推荐答案
详细方法
第一种方法:
首先关闭你的 tomcat [从 bin 目录 (sh shutdown.sh
)] 然后你必须删除你的 tomcat webapps 文件夹中的所有内容 (rm -fr *
) 然后将你的 WAR 文件重命名为 ROOT.war
最后启动你的 tomcat[来自bin目录(sh startup.sh
)]
第二种方法:
将您的战争文件保留在 CATALINA_BASE/webapps
中,以其原始名称 - 关闭autoDeploy 和 deployOnStartup 在 server.xml 文件的 Host 元素中.在 server.xml 中明确定义所有应用程序上下文,指定两个路径和文档库.你必须这样做,因为你已经禁用了所有的Tomcat自动部署机制,Tomcat 将不再部署您的应用程序除非它在 server.xml 中找到它们的上下文.
注意:
这最后一种方法也意味着为了对任何应用程序,您将不得不停止并重新启动Tomcat.
第三种方法:
将您的 war 文件放在 CATALINA_BASE/webapps
之外(它必须在以防止双重部署).- 在
中放置一个名为ROOT.xml
的上下文文件CATALINA_BASE/conf//
.此上下文文件中的单个元素必须具有docBase 属性指向您的 war 文件的位置.路径元素不应设置 - 它派生自 .xml 文件的名称,在此案例ROOT.xml
.有关详细信息,请参阅上面的上下文容器.
这篇关于在 tomcat 7 中设置默认应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!