2011-10-31 216 views
2

我的Web应用程序在我的台式电脑上运行良好,Eclipse & Tomcat。当我将war文件上传到实际服务器时,我无法访问所有带有以下错误消息的servlet。其他JSP和HTML文件没有问题。Tomcat 404未找到错误

The requested URL /HelloWorld/TryingServlet was not found on this server. 

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. 

这是怎么造成的,我怎么能解决这个问题?

+1

首先,它似乎是你有一个apache httpd的对开tomcat的。我从你的ErrorDocument错误中得到了这个。您确定您正在尝试访问正确的网址吗? – cherouvim

+1

它是什么样的主机? Godaddy什么的?在一些主机上,特定于webapp的servlet只能通过URL中特定的附加前缀来提供,比如'/ servlets'。基本上,您需要阅读其开发者FAQ /指南或联系托管支持以获取详细信息。 – BalusC

回答

1

试试这个网址:

http://YOUR_IP:8080/HelloWorld.war/TryingServlet 

替换HelloWorld.war与战争文件的实际名称...

1

您的问题是在生产环境中的Tomcat是由一个Apache httpd的这的确额不要将请求转发给tomcat以获得形式/foobar(没有扩展名)的网址。 Apache不知道如何处理这些URL并尝试将它们作为磁盘上的静态文件提供。这些文件不存在,因此它会尝试执行配置不当的404规则(配置的404文件本身也丢失 - 但这是另一个问题)。

解决方案:

  • 分配分机的所有小服务程序,并指定到Apache。例如.do(就像struts一样),所以你的servlet变成了/foobar.do。然后你需要让系统管理员指定*.do转到tomcat。
  • 请求您的系统管理员配置apache将所有请求发送给tomcat,其中一部分用于静态文件。 E.g *.jpg*.png*.css*.js
+0

救了我一天:) – James