我正在尝试将 Tomcat 6 Web 服务器的默认应用程序更改为不同于“ ROOT”(在 webapps 文件夹内)的应用程序。最好的方法是什么?
根据 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 不是一个可行的解决方案吗?
你可以通过以下方法来做到这一点:
为 Tomcat 6在 server.xml中的 <Host>标记中添加一个 <Context>标记将解决这个问题。
server.xml
<Host>
<Context>
如果使用 path=""为空,则可以使用类似于 http://localhost/first.do的 URL。
path=""
http://localhost/first.do
在 context 标记中设置属性 docBase="E:\struts-ITRCbook\myStrutsbook"和 reloadable="true",然后结束 context 标记。
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>
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。
bin
sh shutdown.sh
webapps
rm -fr *
ROOT.war
sh startup.sh
在 $CATALINA_BASE/webapps中保留原始名称下的 war 文件。关闭 在 server.xml文件中的 Host 元素中的 autoDeploy 和 部署启动。 在 server.xml中显式定义所有应用程序上下文,同时指定 路径 您必须这样做,因为您已经禁用了所有的 Tomcat 自动部署机制,Tomcat 将不再部署您的应用程序 除非它在 server.xml中找到它们的上下文。
$CATALINA_BASE/webapps
第二种方法: 为了对 应用程序,则必须停止并重新启动 Tomcat。
将您的 WAR 文件放在 $CATALINA_BASE/webapps之外(它必须在 $CATALINA_BASE/webapps之外) 防止重复部署)。在 $CATALINA_BASE/conf/中放置一个名为 ROOT.xml的上下文文件。此上下文文件中的单个元素必须具有 指向 WAR 文件位置的 docBase 属性 不应该设置-它派生自 .xml文件的名称,在此 有关详情,请参阅 关联容器的文档
$CATALINA_BASE/conf/
ROOT.xml
.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中添加以下内容:
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系统:
Unix-like
mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
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
/
myAPP
/ROOT
ROOT
<Context path="" docBase="myAPP"/> <Context path="ROOT" docBase="ROOT"/>
将上面的内容添加到 server.xml 中的 <Host>部分
在 Tomcat7(在 Windows 服务器下)中,我没有向任何配置文件添加或编辑任何内容。我只是将 ROOT 文件夹重命名为其他文件夹,并将我的应用程序文件夹重命名为 ROOT,它工作得很好。
更改 Tomcat 根应用程序的最终方法。
移动到 tomcat webapps 目录:
我机器上的例子: ~/stack/apache-tomcat/webapps
~/stack/apache-tomcat/webapps
重命名、替换或删除 ROOT 文件夹。我的建议是重命名或创建一个备份副本。 示例将 ROOT 重命名为 RENAMED _ ROOT:
mv ROOT RENAMED_ROOT
将您的应用程序的 war 文件移动到 tomcat webapps 目录 (它是我机器上旧的 ROOT 文件夹的目录: ~/stack/apache-tomcat/webapps)
War 文件必须有一个名称 根源之战 Need: < strong > your ApplicationName. war-> ROOT.war 需求: < strong > your ApplicationName. war-> ROOT.war