0

最初我有一个名为“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

步骤 3:创建 ROOT 上下文为 $CATALINA_HOME/keshav/ROOT

第 4 步:将我的“管理员”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 文件中,我收到消息“信息:Servlet 操作当前不可用”

谁能帮我弄清楚这个配置有什么问题?

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

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

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

4

2 回答 2

0
  1. 您是否为虚拟主机定义了上下文?查看 Tomcat 虚拟主机指南的配置您的上下文部分。
  2. ROOT 上下文不是必需的(除非您实际使用它)。
  3. 'action' servlet 是否映射到您的 '*.do' 模式web.xml?我假设是这样,因为您已经说过它运行良好,但检查一下也无妨。
于 2009-09-26T18:32:21.100 回答
0

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

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

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

于 2009-09-26T20:07:50.207 回答