我正在使用 Tomcat 6,我刚刚注意到一件奇怪的事情 - 在它启动后,它立即加载了我的 Login.jsp
页。在我看来,它应该没有理由这样做,并且谷歌搜索这个问题我一无所获。任何帮助将不胜感激。
线索与注释:
- 这是
Login.jsp
的原因而不是别的东西很可能是我的web.xml
将其列为唯一的<welcome-file>Login.jsp</welcome-file>
. 如果我在
Login.jsp
中打印堆栈跟踪,我明白了:java.lang.Exception at org.apache.jsp.Login_jsp._jspService(Login_jsp.java:64) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.mycompany.StartupFilter.doFilter(StartupFilter.java:33) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:722)
您会注意到有一个自定义
StartupFilter
,但这可能不是原因。到目前为止,这看起来就像由浏览器等引起的任何其他网页加载一样。- 让我们检查导致此问题的请求:
remoteAddr
和remoteHost
是127.0.0.1
.remotePort
是-1
,这真的很奇怪。请求中没有参数。 (还有什么我应该关注的吗?) - 我有一些预定的线程在后台运行,但它们没有触及 JSP 前端。
启动日志如下所示:
Nov 07, 2013 6:45:17 PM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/vektor/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:. Nov 07, 2013 6:45:17 PM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:RealPadWeb' did not find a matching property. Nov 07, 2013 6:45:17 PM org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on http-8080 Nov 07, 2013 6:45:18 PM org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on http-8443 Nov 07, 2013 6:45:18 PM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 931 ms Nov 07, 2013 6:45:18 PM org.apache.catalina.core.StandardService start INFO: Starting service Catalina Nov 07, 2013 6:45:18 PM org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/6.0.35 Nov 07, 2013 6:45:19 PM org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on http-8080 Nov 07, 2013 6:45:19 PM org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on http-8443 Nov 07, 2013 6:45:19 PM org.apache.jk.common.ChannelSocket init INFO: JK: ajp13 listening on /0.0.0.0:8009 Nov 07, 2013 6:45:19 PM org.apache.jk.server.JkMain start INFO: Jk running ID=0 time=0/18 config=null Nov 07, 2013 6:45:19 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 1622 ms <here I found logged my System.out.println() I put in Login.jsp>
当我打开访问日志阀时,我看到这一行:
127.0.0.1 - - [07/Nov/2013:19:01:54 +0100] "GET / HTTP/1.1" 200 5136
- 我在端口 8443 上使用 HTTPS 连接器重定向到通常的 8080。
- 我尝试关闭 Chrome,但没有帮助(一个奇怪的插件可能接触了最近访问过的服务器)。
- 我正在从 Eclipse Juno 启动服务器。
这是我得到的。任何帮助将非常感激。如果您需要查看任何其他配置文件,请告诉我!
首屏:细节
- OS X 10.8.5(可能是防火墙?)
- Java 1.6.0.35
- Tomcat 6.0.35
- 该项目使用 AspectJ,日志记录是通过 Log4J 2 beta cca 9 完成的(它可能是一个日志守护线程吗?)
最佳答案
Tomcat 不会那样做。 Eclipse 的 Tomcat 插件可以做到这一点。在 Tomcat 声称成功启动后,Eclipse Tomcat 插件在 /
上触发请求为了检查这是否属实。正如您显然已经将 Web 应用程序部署在上下文根 /
上, 它的 <welcome-file>
将隐式打开。因此请注意,当您的 Web 应用程序部署在固定的上下文路径上时,这不会发生。
忽略它。这是完全无害的。此外,这在实际生产中不会发生(当然,我假设生产服务器不会无知地单独使用 Eclipse 来启动 Tomcat 服务器实例)。
关于java - 启动 Tomcat 加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19842898/