2013-01-14 45 views
13

我已经通过描述如何配置给定WAR(比如说abc.war)作为tomcat中的默认web-app的线程。在tomcat 7中设置默认应用程序

要么

的abc.war重命名为ROOT.war

创建$上下文的ROOT.xml {tomcat.home}/CONF /卡塔利娜/ localhost with path =“”,docBase设置为战争的相对/绝对路径(保持webapps外部的abc.war 以避免双重部署)。

这两种解决方案都会在webapps(appBase)目录中产生ROOT.war。不过,我想在webapps中保留WAR名称(abc.war),并且没有单独的ROOT.war来实现此目的。

在我的情况下工作的一种解决方案是在server.xml中的<主机>标记下添加上下文。但根据Tomcat 7 Doc,不建议直接在server.xml中添加上下文。

有人可以指点我吗?

谢谢。

+0

第二种方法 – TheWhiteRabbit

+0

我继续在server.xml的Host标记内使用。 –

+1

http://wiki.apache.org/tomcat/HowTo#How_do_I_make_my_web_application_be_the_Tomcat_default_application.3F参考这个你可以得到完整的答案 – madhu

回答

19

详细的方法

第一种方法:

第一关闭你的tomcat [从bin目录(sh shutdown.sh),那么你 必须删除你的Tomcat Web应用程序的所有内容文件夹(rm -fr *)然后 重命名你的WAR文件到ROOT.war终于开始你的tomcat [从th Ëbin目录(sh startup.sh

第二种方法:

离开CATALINA_BASE/webapps WAR文件,在其原来的名字 - 关闭 自动部署和deployOnStartup在服务器的Host元素。 xml文件。 显式定义server.xml中的所有应用程序上下文,同时指定路径 和docBase。您必须这样做,因为您已禁用所有Tomcat 自动部署机制,并且Tomcat不会再部署您的应用程序 ,除非它在server.xml中找到它们的上下文。

注:

,这最后的方法也意味着,为了进行任何更改任何 应用程序,你必须停止和重新启动Tomcat。

三方法:CATALINA_BASE/webapps

将WAR文件(必须是外 以防止重复部署)。 - 将名为ROOT.xml的上下文文件放入
CATALINA_BASE/conf//。这个上下文文件中的单个元素必须有一个 docBase属性指向你的war文件的位置。路径元素 不应该被设置 - 它来源于.xml文件的名称,在这个 的情况下ROOT.xml。有关详细信息,请参阅上述上下文容器

+1

请记住,第三种方法war文件不会部署到webapps文件夹,假设你已经在server.xml中保留了默认值。另外,如果你有myApp.war并且你想让上下文根目录为/ foo/bar,你可以命名你的xml文件foo#bar.xml – Striker

+1

我试过了你的第三个解决方案,但它对我来说并不合适。我的应用程序名称是'springExample',我把它放在webapps DIR之外的'C:\ Tomcat \ springExample.war'下面。然后我在'C:\ Tomcat \ conf \ Catalina \ localhost \ ROOT.xml'中创建了一个'ROOT.xml'文件。ROOT.xml的内容是<?xml version =“1.0”?> '。并重新启动服务器。请告诉我我在哪里做错了。 –

+1

我设法通过将'docBase属性值更改为“来实现它。但是你现在可以告诉我Tomcat是在提取这个'war'文件吗?它可以通过'Tomcat应用程序管理器Web界面'进行管理。感谢... –

相关问题