Tomcat 虚拟主机配置不适用于 Struts 操作
最初,我有一个名为“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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是典型的 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.web.xml
中的“*.do”模式?我想是的,因为你已经说过它运行良好,但检查一下总没有坏处。web.xml
? I assume so since you've said it was running fine but it never hurts to check.