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

发布于 2024-08-05 16:46:49 字数 1188 浏览 12 评论 0原文

最初,我有一个名为“admin”的 Web 应用程序运行良好,部署在 tomcat 6 的 $CATALINA_HOME/webapps/ 目录中。现在我尝试设置一个虚拟主机来运行此 Web 应用程序。

第 1 步:我在 $CATALINA_HOME/conf/server.xml 中添加了以下内容

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

</Host>

第 2 步:我创建了一个文件夹 $CATALINA_HOME/keshav

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

第 4 步:移动了我的“admin”Web 应用程序(位于其中) $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 似乎导致了这个问题..

Initially I had a webapp called "admin" running fine, deployed inside the $CATALINA_HOME/webapps/ directory of tomcat 6. Now I tried setting up a vitual host to run this webapp.

Step1: I added the following in $CATALINA_HOME/conf/server.xml

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

</Host>

Step2: I created a folder $CATALINA_HOME/keshav

Step3: Created the ROOT context as $CATALINA_HOME/keshav/ROOT

Step4: Moved my "admin" webapp (which was inside $CATALINA_HOME/webapps/) to $CATALINA_HOME/keshav

Now when I access http://mysudomain.domain.com/admin/jsp/login.jsp, it WORKS fine bringing up the login page. But when I try accessing http://mysubdomain.domain.com/admin/Login.do or any other struts action it gives me 404 error-

"HTTP Status 404 - Servlet action is not available"

In the catalina.out file I get the message "INFO: Servlet action is currently unavailable"

Can anyone please help me figure out what is wrong in this config?

UPDATE: I also had changed the connector port from 8080 to 80. Since opening 80 port requires root privileges, I am starting tomcat using sudo (the user that I am using is in the sudoers list).

Whenever I run tomcat with sudo, the 404 error for struts actions are occuring. If I change the connector port from 80 to 8080 and start without using sudo, the virtual host is working fine..

If I su to root and start tomcat, it is working fine as well. Using sudo seems to be causing this problem..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

比忠 2024-08-12 16:46:49

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

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

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

This is typical of ActionServlet. It maps all exception to UnavailableException so you always get "unavaiable" error even if the servlet is dead. There should be other information in log to show you the exact cause.

When you run the server in sudo, the environment changes. Maybe struts config relies on some environment variable or default working directory?

Try "sudo -s catalina.sh". It may help.

温暖的光 2024-08-12 16:46:49
  1. 您是否为虚拟主机定义了上下文?查看 Tomcat 的配置您的上下文部分虚拟主机指南。
  2. ROOT 上下文不是必需的(除非您实际使用它)。
  3. “action”servlet 是否映射到 web.xml 中的“*.do”模式?我想是的,因为你已经说过它运行良好,但检查一下总没有坏处。
  1. Have you defined context for your virtual host? Take a look at Configuring Your Context section of Tomcat virtual hosting guide.
  2. ROOT context is not required (unless you're actually using it).
  3. Is 'action' servlet mapped to '*.do' pattern in your web.xml? I assume so since you've said it was running fine but it never hurts to check.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文