我已经完成了描述如何在tomcat中将给定WAR(比如abc.war)配置为默认web-app的线程。
无论
将abc.war重命名为ROOT.war
或
在$ {tomcat.home} / conf / Catalina / localhost中使用path =“”创建上下文ROOT.xml,并将docBase设置为战争的相对/绝对路径(保留abc.war 在webapps之外,以避免双重部署。)
这两个解决方案都会在webapps(appBase)目录中生成ROOT.war。但是我想在webapps中保留WAR名称(abc.war),而没有单独的ROOT.war来实现这一点。
在我的案例中有效的一个解决方案是在< Host>下添加上下文。 server.xml中的标记。但是根据Tomcat 7 Doc,不建议直接在server.xml中添加上下文。
有人能指出我的替代方案吗?
感谢。
答案 0 :(得分:19)
详细方法
第一种方法:
首先关闭你的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 自动部署机制,Tomcat将不再部署您的应用程序 除非它在server.xml中找到它们的Context。
注意:
这最后一个方法也意味着为了对任何一个做出任何改变 应用程序,您将不得不停止并重新启动Tomcat。
第三种方法:
将你的战争文件放在
CATALINA_BASE/webapps
之外(它必须在外面 防止双重部署)。 - 将一个名为ROOT.xml
的上下文文件放在
中CATALINA_BASE/conf//
。这个上下文文件中的单个元素必须有一个 docBase属性指向war文件的位置。路径元素 不应该设置 - 它是从.xml文件的名称派生的 情况1}}。有关详细信息,请参阅上面的上下文容器。