如何更改ROOT应用程序?
我正在尝试将Tomcat 6networking服务器的默认应用程序更改为不同于“ROOT”(webapps文件夹内)的应用程序。 什么是最好的方法来做到这一点?
有三种方法:
-
首先closures你的Tomcat的
bin
目录(sh shutdown.sh
)。 然后删除Tomcatwebapps
文件夹的所有内容(rm -fr *
)。 然后将WAR文件重命名为ROOT.war
,最后从bin
目录(sh startup.sh
)启动Tomcat。 -
把你的war文件放在
$CATALINA_BASE/webapps
的原始名称下。 在server.xml
文件的主机元素中closuresautoDeploy和deployOnStartup 。 显式定义server.xml
所有应用程序上下文,同时指定path和docBase属性。 你必须这样做,因为你已经禁用了所有的Tomcat自动部署机制,除非在server.xml
find它们的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的文件来定义。”
你可以通过下面的方式做一些简单的事情:
- 停止雄猫
- 将ROOT.war放在一边,rm -rf webapps / ROOT
- 将你想要的webapp复制到webapps / ROOT.war
- 启动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
系统中:
-
mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
-
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,并且工作正常。