14

我已经完成了描述如何将给定的 WAR(比如 abc.war)配置为 tomcat 中的默认 Web 应用程序的线程。

任何一个

将 abc.war 重命名为 ROOT.war

或者

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

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

在我的案例中有效的一种解决方案是在 server.xml 的 <Host> 标记下添加上下文。但是根据Tomcat 7 Doc,不建议直接在 server.xml 中添加上下文。

有人可以指出我的替代方案吗?

谢谢。

4

1 回答 1

20

详细方法

第一种方法:

首先关闭你的 tomcat [从 bin 目录 ( sh shutdown.sh)] 然后你必须删除你的 tomcat webapps 文件夹 ( rm -fr *) 的所有内容,然后重命名你的 WAR 文件以ROOT.war最终启动你的 tomcat [从 bin 目录 ( sh startup.sh)]

第二种方法:

将您的战争文件保留在CATALINA_BASE/webapps原始名称下 - 在 server.xml 文件的 Host 元素中关闭 autoDeploy 和 deployOnStartup。在 server.xml 中明确定义所有应用程序上下文,同时指定路径和 docBase。您必须这样做,因为您已禁用所有 Tomcat 自动部署机制,并且 Tomcat 将不再部署您的应用程序,除非它在 ​​server.xml 中找到它们的 Context。

笔记:

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

第三种方法:

将您的战争文件放在外面CATALINA_BASE/webapps(它必须在外面以防止双重部署)。-放置一个名为ROOT.xml.
CATALINA_BASE/conf//此上下文文件中的单个元素必须具有指向您的战争文件位置的 docBase 属性。不应设置 path 元素 - 在本例中,它源自 .xml 文件的名称ROOT.xml。有关详细信息,请参阅上面的上下文容器。

于 2013-01-16T07:36:55.173 回答