Tomcat虚拟主机配置不适用于Struts操作

时间:2009-09-26 18:16:36

标签: java tomcat struts http-status-code-404 virtual-hosts

最初我有一个名为“admin”的webapp正常运行,部署在tomcat 6的$ CATALINA_HOME / webapps /目录中。现在我尝试设置一个虚拟主机来运行这个webapp。

Step1:我在$ CATALINA_HOME / conf / server.xml

中添加了以下内容
<Host name="mysubdomain.domain.com" appBase="keshav">

</Host>

Step2:我创建了一个文件夹$ CATALINA_HOME / keshav

Step3:创建ROOT上下文为$ CATALINA_HOME / keshav / ROOT

Step4:将我的“admin”webapp(位于$ CATALINA_HOME / webapps /中)移至$ CATALINA_HOME / keshav

现在,当我访问http://mysudomain.domain.com/admin/jsp/login.jsp时,它可以很好地启动登录页面。但是当我尝试访问http://mysubdomain.domain.com/admin/Login.do或任何其他struts操作时,它会给我404错误 -

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

在catalina.out文件中,我收到消息“INFO:Servlet操作当前不可用”

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

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

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

如果我su到root并启动tomcat,它也可以正常工作。使用sudo似乎导致了这个问题。

2 个答案:

答案 0 :(得分:0)

  1. 您是否为虚拟主机定义了上下文?请查看Tomcat虚拟主机指南的Configuring Your Context部分。
  2. 不需要ROOT上下文(除非您实际使用它)。
  3. “action”servlet是否在web.xml中映射到“* .do”模式?我是这么认为的,因为你说它运行正常,但检查不会有任何伤害。

答案 1 :(得分:0)

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

在sudo中运行服务器时,环境会发生变化。也许struts config依赖于某些环境变量或默认工作目录?

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