2009-09-26 47 views
0

最初我有一个叫做“admin”的webapp运行良好,部署在tomcat 6的$ CATALINA_HOME/webapps /目录中。现在我尝试设置一个虚拟主机来运行这个webapp。Tomcat虚拟主机配置不适用于Struts动作

第一步:我加在$ CATALINA_HOME/conf目录/ server.xml中

<Host name="mysubdomain.domain.com" appBase="keshav"> 

</Host> 

第二步如下:我创建了一个文件夹$ CATALINA_HOME /凯沙夫

第三步:创建的根上下文$ CATALINA_HOME /凯沙夫/ ROOT

第四步:动了我的 “admin” 的Web应用程序(这是$ CATALINA_HOME/webapps /目录内)到$ CATALINA_HOME /凯沙夫

现在,当我访问http://mysudomain.domain.com/admin/jsp/login.jsp,它可以很好地启动登录页面。但是当我试图访问http://mysubdomain.domain.com/admin/Login.do或任何其他支柱作用它给了我404无错

“HTTP状态404 - Servlet的作用是不可用”

在catalina.out的文件,我得到的消息“INFO:Servlet的动作目前无法使用“

任何人都可以请帮我弄清楚这个配置有什么问题吗?

更新:我也将连接器端口从8080更改为80.由于打开80端口需要root权限,我使用sudo启动tomcat(我正在使用的用户位于sudoers列表中)。

每当我用sudo运行tomcat时,struts动作的404错误都会发生。如果我将连接器端口从80改为8080,并且启动时不使用sudo,虚拟主机工作正常。

如果我su启动tomcat,它也工作正常。使用sudo似乎会导致此问题。

回答

0

这是ActionServlet的典型特征。它将所有异常映射到UnavailableException,因此即使该servlet已经死亡,您也总会得到“不可用”的错误。日志中应该有其他信息来显示确切的原因。

当您在sudo中运行服务器时,环境会改变。也许struts配置依赖于一些环境变量或默认工作目录?

尝试“sudo -s catalina.sh”。它可能有帮助。

0
  1. 您是否为虚拟主机定义了上下文?看看Tomcat虚拟主机指南的Configuring Your Context部分。
  2. ROOT上下文不是必需的(除非您实际使用它)。
  3. 在您的web.xml中,'action'servlet是否映射为'* .do'模式?我认为,既然你说过它运行良好,但它从来没有伤害检查。
+0

感谢chssply76的回复。 1)不,我想在我的“admin”webapp中不需要单独的context.xml,$ CATALINA_HOME/conf中的默认值就足够了2)是ROOT不是必需的,但我使用它来重定向到“admin “webapp 3)是的。请检查我的最新更新.. - Keshav – Keshav

+0

因此,JSP甚至可以在端口80上使用sudo,但操作不行?您是否确定工作的JSP实际上来自您的“虚拟”主机,而不是之前运行的人工产物(例如缓存编译的或者来自非虚拟应用程序的)?运行sudo可能(通常会)改变你的环境,运行'sudo -V'来查看细节。也许有些事情在类路径中发生了一些事情......尝试通过sudo启动Tomcat,同时端口仍然在8080 - 这应该有助于缩小到sudo vs端口问题。一定要启动Tomcat清理(没有任何工作/ tmp; webapp部署到一个地方)。 – ChssPly76