我正在为Tomcat上的所有内容连接超时,日志说它全部是404.我该怎么调试呢?

时间:2015-04-23 18:20:50

标签: tomcat windows-server-2008

Simptom:

与Tomcat 7服务器的任何类型的连接都会给出一个空白页面。日志注册为此,有JSP页面连接或我知道在服务器中可用的单个JPG文件:

192.168.0.130 - - [23/Apr/2015:00:45:53 -0300] "GET / HTTP/1.0" 404 -
192.168.0.130 - - [23/Apr/2015:00:51:23 -0300] "GET / HTTP/1.0" 404 -
172.18.109.82 - - [23/Apr/2015:14:00:59 -0300] "GET /APPS/portal/index.jsp HTTP/1.1" 404 -
172.18.109.82 - - [23/Apr/2015:14:00:59 -0300] "GET /favicon.ico HTTP/1.1" 404 -
172.18.109.82 - - [23/Apr/2015:14:01:18 -0300] "GET /APPS/portal/index.jsp HTTP/1.1" 404 -
172.18.109.82 - - [23/Apr/2015:14:01:52 -0300] "GET /APPS/portal/index.jsp HTTP/1.1" 404 -
172.18.109.82 - - [23/Apr/2015:14:01:55 -0300] "GET / HTTP/1.1" 404 -
127.0.0.1 - - [23/Apr/2015:14:02:30 -0300] "GET /manager/html HTTP/1.1" 404 -
172.18.109.82 - - [23/Apr/2015:14:15:44 -0300] "GET /APPS/portal/imgs/main.jpg HTTP/1.1" 404 -

它是Windows 2008 R2服务器,它在端口8088上运行.NET,在端口80上运行Tomcat。

我尝试过的事情:

检查Tomcat中的conf文件是否已更改。一切似乎都很正常。 server.xml的port和baseapp都是正确的。

Windows防火墙仍具有正确的入站规则。我甚至可以ping IP,内网DNS工作正常。

使用.NET端口的网站运行正常。问题出在Tomcat 7上。

如何进一步调试此情况?

编辑:

只是添加了我尝试考虑评论的其他内容:

禁用.NET

检查.NET日志以检查它是否在窃取任何内容。

更改Tomcat端口

检查Tomcat日志以查看应用是否正确启动。

检查我是否有ROOT网络应用。

2 个答案:

答案 0 :(得分:4)

那些是Tomcat访问日志?如果是这样,它们意味着请求到达Tomcat,具有正确的requestURI行(您在日志中正确地看到它们而不是垃圾),但Tomcat生成状态为404且大小为0(' - ')的响应。

404错误的空白响应通常表示没有“ROOT”Web应用程序(即默认Web应用程序)正在运行。

当请求无法路由到Web应用程序时(没有部署匹配的Web应用程序,并且默认情况下没有部署ROOT应用程序将其路由到那里),Tomcat必须在早期阶段拒绝它。

当请求处理在早期阶段中止时(在连接器中,在到达servlet引擎之前,ErrorReportValve)Tomcat产生一个空响应,其中包含正确的HTTP错误代码和原因短语和标题,但内容长度为零。

所以,

  1. 检查您的Web应用程序已成功启动的Tomcat启动日志。

  2. 确保您拥有ROOT网络应用。如果server.xml中有多个<Host>元素 - 每个元素都有一个ROOT Web应用程序。

    只需要一个空的“webapps / ROOT”文件夹即可解决此问题。没有必要。 (没有必要使用WEB-INF / web.xml文件。默认值是从全局conf / web.xml继承的。)

  3. 确保<Engine>文件中server.xml元素的“defaultHost”属性与现有<Host>名称匹配。

答案 1 :(得分:1)

你可以尝试

  1. 禁用.NET,我假设IIS,看它是否正在窃取 呼叫。
  2. 向.NET添加日志以查看它是否正在窃取这些电话。
  3. 将Tomcat端口更改为其他未使用的端口,例如888。
  4. 检查您的路由,看看它是否可以托管不同的路由 路径。
  5. 同时拥有IIS和Tomcat的一种方法是让IIS使用外部请求并将其转发到不同本地端口上的Tomcat。