在tomcat 7中设置默认应用程序
Posted
技术标签:
【中文标题】在tomcat 7中设置默认应用程序【英文标题】:Setting default application in tomcat 7 【发布时间】:2012-12-28 19:26:20 【问题描述】:我已经完成了描述如何在 tomcat 中将给定 WAR(比如 abc.war)配置为默认 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 的
有人能指点我一个替代方案吗?
谢谢。
【问题讨论】:
我在 server.xml 的 Host 标签中继续使用详细方法
第一种方法:
首先关闭你的 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 中显式定义所有应用程序上下文,同时指定两个路径 和文档库。您必须这样做,因为您已禁用所有 Tomcat 自动部署机制,Tomcat 将不再部署您的应用程序 除非它在 server.xml 中找到它们的 Context。
注意:
最后一种方法也意味着为了对任何 应用程序,您将不得不停止并重新启动 Tomcat。
第三种方法:
将你的war文件放在
CATALINA_BASE/webapps
之外(它必须在外面 以防止双重部署)。 - 在CATALINA_BASE/conf//
中放置一个名为ROOT.xml
的上下文文件。此上下文文件中的单个元素必须具有 docBase 属性指向你的war 文件的位置。路径元素 不应设置 - 它源自 .xml 文件的名称,在此 案例ROOT.xml
。有关详细信息,请参阅上面的上下文容器。
【讨论】:
请记住,使用第三种方法,war 文件不会部署到 webapps 文件夹,假设您在 server.xml 中保留了默认值。此外,如果您有 myApp.war 并且希望上下文根为 /foo/bar,您可以将 xml 文件命名为 foo#bar.xml 我已经尝试了您的第三种解决方案,但它对我不起作用。我的应用名称是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"/>
。并重新启动服务器。请告诉我哪里做错了。
我设法通过更改 docBase attribute value to <Context reloadable="true" path="" docBase="C:\Tomcat\springExample"/>
使其工作。但是你现在能告诉我Tomcat
在哪里提取这个war
文件吗?可以通过Tomcat app manager web interface
管理吗。谢谢...
如果我们可以为第二种和第三种解决方案提供示范,那将非常有帮助
为第三种方法添加示例以上是关于在tomcat 7中设置默认应用程序的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Openshift Tomcat 7 (JBOSS EWS 2.0) 中设置休眠 MySQL 连接?