如何更改ROOT应用程序?

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

有三种方法:

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

  • 把你的war文件放在$CATALINA_BASE/webapps的原始名称下。 在server.xml文件的主机元素中closuresautoDeploydeployOnStartup 。 显式定义server.xml所有应用程序上下文,同时指定pathdocBase属性。 你必须这样做,因为你已经禁用了所有的Tomcat自动部署机制,除非在server.xmlfind它们的Context,Tomcat不会再部署你的应用程序。

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

  • 将您的WAR文件放在$CATALINA_BASE/webapps (它必须在外面以防止双重部署)。 在$CATALINA_BASE/conf/放置一个名为ROOT.xml的上下文文件。 这个上下文文件中的单个元素必须有一个指向WAR文件位置的docBase属性。 path元素不应该被设置 – 它是从.xml文件的名字派生的,在这个例子中是ROOT.xml 。 有关详细信息,请参阅Context容器的文档 。

参考

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

如果你使用path=""空,你可以使用像http://localhost/first.do这样的URL。

在上下文标签集属性docBase="E:\struts-ITRCbook\myStrutsbook"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> 

ROOT的默认应用程序通常是Tomcat Manager – 这可能是有用的,所以感觉就像保持它。

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

把ROOT重命名为别的东西

mv ROOT TCmgr

然后创build一个符号链接ROOT指向应用程序,我想使默认。

your app ROOT

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

–nestochan

在这些变化的Tomcat 7中,我能够访问myAPP/ROOT /ROOT

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

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

根据Apache Tomcat文档,您可以通过创buildROOT.xml文件来更改应用程序。 查看更多信息:

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

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

你可以通过下面的方式做一些简单的事情:

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

@ danny-london的第三种方法在Tomcat 7中不适用于我,但是如果将ROOT.xml文件放在$CATALINA_BASE/conf/[enginename]/[hostname]目录中(对于我的基本设置是$CATALINA_HOME/conf/Catalina/localhost )。 请参阅上下文容器文档 。

context.xmlconfiguration不适合我。 Tomcat 6.0.29抱怨appBase中的docBase:…对于Tomcat 5,这确实起作用。

所以一个解决scheme是把应用程序放在ROOT文件夹中。

另一个非常简单的解决scheme是将一个index.jsp放到ROOT中,像这样redirect到我的应用程序:response.sendRedirect(“/ MyApplicationXy”);

最好的问候,1月

另一种解决scheme是创build一个servlet,将redirect发送到所需的默认Web应用程序,并将该servlet映射到ROOT Web应用程序中的所有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来接受一个初始化参数,以允许你设置默认的webapp而不必修改源代码。

我不知道这样做会有什么负面影响,但我做了testing,似乎工作。

configurationserver.xml并添加了Context元素时遇到了问题。 他只是不想使用我的configuration: 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

完成。

为我工作。

我会看看我的文档; 有一种指定configuration的方式,将ROOT(或ROOT.war)的根web应用程序的path改变,但是在Tomcat 5和6之间似乎已经改变了。

find这个:

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

所以,似乎更改根path(在ROOT.xml中)是可能的,但有一点破坏 – 您需要将WAR移到自动部署目录之外。 请记住,如果我问为什么只是将您的文件重命名为ROOT.war不是一个可行的解决scheme?

不是一个很好的解决scheme,但一种方法是从ROOT应用程序redirect到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(在Windows服务器下),我没有添加或编辑任何configuration文件。 我只是将ROOT文件夹重命名为其他名称,并将我的应用程序文件夹重命名为ROOT,并且工作正常。