如何更改ROOT应用程序?

时间:2009-04-03 20:05:13

标签: tomcat tomcat6

我正在尝试将Tomcat 6网络服务器的默认应用程序更改为与“ROOT”(在webapps文件夹内)不同的应用程序。这样做的最佳方式是什么?

13 个答案:

答案 0 :(得分:123)

有三种方法:

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

  • 将您的war文件保留在原始名称下的$CATALINA_BASE/webapps中。关掉 在server.xml文件的Host元素中 autoDeploy deployOnStartup 。 在server.xml中明确定义所有应用程序上下文,同时指定路径 docBase 属性。您必须执行此操作,因为您已禁用所有Tomcat 自动部署机制,Tomcat将不再部署您的应用程序 除非它在server.xml

    中找到他们的上下文
      

    第二种方法:为了对任何一种做出任何改变   应用程序,您将不得不停止并重新启动Tomcat。

  • 将您的WAR文件放在$CATALINA_BASE/webapps之外(它必须在外面 防止双重部署)。在ROOT.xml中放置一个名为$CATALINA_BASE/conf/的上下文文件。这个上下文文件中的单个元素必须有一个 指向WAR文件位置的 docBase 属性。路径元素 不应该设置 - 它是从.xml文件的名称派生而来的 情况1}}。有关详细信息,请参阅documentation for the Context container

Reference

答案 1 :(得分:23)

在Tomcat 6的<Context> <Host>标记中添加server.xml标记可以解决此问题。

如果您使用path=""为空,则可以使用http://localhost/first.do之类的网址。

在上下文标记集属性docBase="E:\struts-ITRCbook\myStrutsbook"reloadable="true"中,然后结束上下文标记。

看起来应该是这样的:

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

答案 2 :(得分:21)

在Tomcat 7中进行了这些更改后,我可以myAPP访问/ROOT访问/ROOT

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

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

答案 3 :(得分:15)

ROOT默认应用程序通常是Tomcat管理器 - 这可能很有用,所以我觉得要保留它。

所以我做 我的 应用ROOT并保留TCmgr的方式是这样的。

将ROOT重命名为其他内容

mv ROOT TCmgr

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

ln -s <your app> ROOT

为我工作,似乎是最简单的方法。

答案 4 :(得分:12)

您可以通过以下方式执行此操作:

  1. 停止Tomcat
  2. 将ROOT.war放在一边,rm -rf webapps / ROOT
  3. 将您想要的webapp复制到webapps / ROOT.war
  4. 启动Tomcat

答案 5 :(得分:11)

根据Apache Tomcat文档,您可以通过创建ROOT.xml文件来更改应用程序。有关详细信息,请参阅此处:

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

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

答案 6 :(得分:3)

另一种解决方案是创建一个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/classes/com/example/servlet
并将以下内容添加到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参数,以允许您设置默认Web应用程序而无需修改源。

我不确定这样做是否会产生任何负面影响,但我确实对此进行了测试,看起来确实有效。

答案 7 :(得分:2)

context.xml配置对我不起作用。 Tomcat 6.0.29抱怨appBase中的docBase:... 对于Tomcat 5,这确实有效。

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

另一个非常简单的解决方案是将一个index.jsp放到ROOT,重定向到我的应用程序,如下所示: response.sendRedirect是( “/ MyApplicationXy”);

最诚挚的问候, 扬

答案 8 :(得分:1)

配置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
  3. 完成。

    适合我。

答案 9 :(得分:1)

更改tomcat根应用程序的最终方式。在Tomcat 7和8上测试。

  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)

  4.   

    战争文件的名称必须为 ROOT.war 。如果是,请重命名您的应用程序   需要: yourApplicationName.war - &gt; ROOT.war

    1. 重启tomcat。 重启后,您的应用程序将成为root。

答案 10 :(得分:0)

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

发现这个:

http://www.nabble.com/Re:-Tomcat-6-and-ROOT-application...-td20017401.html

因此,似乎可以更改根路径(在ROOT.xml中),但有点坏 - 您需要将WAR移到自动部署目录之外。请注意,如果我问为什么只将文件重命名为ROOT.war不是一个可行的解决方案?

答案 11 :(得分:0)

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

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

OR

<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

答案 12 :(得分:-4)

在Tomcat 7中(在Windows服务器下)我没有添加或编辑任何配置文件。我刚刚将ROOT文件夹重命名为其他内容,并将我的应用程序文件夹重命名为ROOT,并且工作正常。