如何更改 ROOT 应用程序?

我正在尝试将 Tomcat 6 Web 服务器的默认应用程序更改为不同于“ ROOT”(在 webapps 文件夹内)的应用程序。最好的方法是什么?

245425 次浏览

根据 ApacheTomcat 文档,您可以通过创建 ROOT.xml 文件来更改应用程序。更多信息请参见:

Http://tomcat.apache.org/tomcat-6.0-doc/config/context.html

“默认的 web 应用程序可以通过使用名为 ROOT.xml 的文件来定义。”

我将查看我的文档; 有一种方法可以指定一种配置来更改根 Web 应用程序远离 ROOT (或 ROOT.war)的路径,但它似乎在 Tomcat 5和6之间发生了变化。

找到了这个:

Http://www.nabble.com/re:-tomcat-6-and-root-application...-td20017401.html

因此,看起来更改根路径(在 ROOT.xml 中)是可能的,但是有一点破碎——您需要将您的 WAR 移到自动部署目录之外。介意我问一下为什么把你的文件重命名为 ROOT.war 不是一个可行的解决方案吗?

你可以通过以下方法来做到这一点:

  1. 停止雄猫
  2. 把 ROOT.war 移到一边,然后 rm-rf webapps/ROOT
  3. 复制你想要的 webapps/ROOT.war
  4. 启动雄猫

为 Tomcat 6在 server.xml中的 <Host>标记中添加一个 <Context>标记将解决这个问题。

如果使用 path=""为空,则可以使用类似于 http://localhost/first.do的 URL。

在 context 标记中设置属性 docBase="E:\struts-ITRCbook\myStrutsbook"reloadable="true",然后结束 context 标记。

它应该是这样的:

<Host name="localhost"  appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="E:\struts-ITRCbook\myStrutsbook" reloadable="true">
</Context>
</Host>

Xml 配置对我来说不起作用。 Tomcat 6.0.29抱怨 docBase 位于 appBase: ..。 对于 Tomcat 5来说,这确实有效。

因此,一种解决方案是将应用程序放在 ROOT 文件夹中。

另一个非常简单的解决方案是将 index.jsp 放到 ROOT 中,它会像下面这样重定向到我的应用程序: SendRedirect (“/MyApplicationXy”) ;

最好的问候, 珍

有三种方法:

  • 首先从 Tomcat 的 bin目录(sh shutdown.sh)关闭 Tomcat。然后删除 Tomcat webapps文件夹(rm -fr *)中的所有内容。然后将 WAR 文件重命名为 ROOT.war,最后从 bin目录(sh startup.sh)启动 Tomcat。

  • $CATALINA_BASE/webapps中保留原始名称下的 war 文件。关闭 server.xml文件中的 Host 元素中的 autoDeploy 部署启动。 在 server.xml中显式定义所有应用程序上下文,同时指定 路径 您必须这样做,因为您已经禁用了所有的 Tomcat 自动部署机制,Tomcat 将不再部署您的应用程序 除非它在 server.xml中找到它们的上下文。

    第二种方法: 为了对 应用程序,则必须停止并重新启动 Tomcat。

  • 将您的 WAR 文件放在 $CATALINA_BASE/webapps之外(它必须在 $CATALINA_BASE/webapps之外) 防止重复部署)。在 $CATALINA_BASE/conf/中放置一个名为 ROOT.xml的上下文文件。此上下文文件中的单个元素必须具有 指向 WAR 文件位置的 docBase 属性 不应该设置-它派生自 .xml文件的名称,在此 有关详情,请参阅 关联容器的文档

参考文献

另一种解决方案是创建一个 servlet,该 servlet 将重定向发送到所需的默认 webapp,并将该 servlet 映射到 ROOT webapp 中的所有 URL。

package com.example.servlet;


import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class RedirectServlet extends HttpServlet {


@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.sendRedirect("/myRootWebapp");
}
}

将上面的类添加到
CATALINA_BASE/webapps/ROOT/WEB-INF/web.xml中添加以下内容:

  <servlet>
<display-name>Redirect</display-name>
<servlet-name>Redirect</servlet-name>
<servlet-class>com.example.servlet.RedirectServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Redirect</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

如果需要,您可以轻松地修改 RedirectServlet 以接受 init 参数,从而允许您设置默认的 webapp,而无需修改源代码。

我不确定这样做是否会有任何负面影响,但我确实测试了这一点,它似乎确实有效。

ROOT 默认应用程序通常是 Tomcat Manager-这可能是有用的,所以我觉得把它放在身边。

因此,我使 我的应用程序根和保持 TCmgr 是这样的。

改名为 ROOT

mv ROOT TCmgr

然后创建一个符号链接,根据这个链接,ROOT 指向我想要默认的应用程序。

ln -s <your app> ROOT

对我很有效,而且似乎是最简单的方法。

在配置 Tomcat’server.xml和添加 Context 元素时,我遇到了一个问题。 他只是不想用我的配置: Http://www.oreillynet.com/onjava/blog/2006/12/configuration_antipatterns_tom.html

如果你使用的是 Unix-like系统:

  1. mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
  2. ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT

成交。

我没问题。

这不是一个很好的解决方案,但是有一种方法是从 ROOT 应用程序重定向到 YourWebApp。为此,您需要修改 ROOT index.html。

<html>
<head>
<title>Redirecting to /YourWebApp</title>
</head>
<body onLoad="javascript:window.location='YourWebApp';">
</body>
</html>

或者

<html>
<head>
<title>Redirecting to /YourWebApp</title>
<meta http-equiv="refresh" content="0;url=YourWebApp" />
</head>
<body>
</body>
</html>

参考资料: http://staraphd.blogspot.com/2009/10/change-default-root-folder-in-tomcat.html

在 Tomcat 7中,通过这些更改,我能够在 /访问 myAPP,在 /ROOT访问 ROOT

<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>

将上面的内容添加到 server.xml 中的 <Host>部分

在 Tomcat7(在 Windows 服务器下)中,我没有向任何配置文件添加或编辑任何内容。我只是将 ROOT 文件夹重命名为其他文件夹,并将我的应用程序文件夹重命名为 ROOT,它工作得很好。

更改 Tomcat 根应用程序的最终方法。

  1. 移动到 tomcat webapps 目录:

    我机器上的例子: ~/stack/apache-tomcat/webapps

  2. 重命名、替换或删除 ROOT 文件夹。我的建议是重命名或创建一个备份副本。 示例将 ROOT 重命名为 RENAMED _ ROOT:

    mv ROOT RENAMED_ROOT

  3. 将您的应用程序的 war 文件移动到 tomcat webapps 目录 (它是我机器上旧的 ROOT 文件夹的目录: ~/stack/apache-tomcat/webapps)

War 文件必须有一个名称 根源之战 Need: < strong > your ApplicationName. war-> ROOT.war 需求: < strong > your ApplicationName. war-> ROOT.war

  1. 重启雄猫。 重新启动后,您的应用程序将是一个根目录。