我正在开发一个使用JSP和Servlet的网站,使用Apache -tomcat5.5作为服务器。我的应用程序运行得很好。但每当我打开任何网页,并在一段时间后返回,比如30分钟后,单击任何按钮或图标,它都会抛出错误消息--
Sep 16, 2011 2:11:33 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.homepage_jsp._jspService(homepage_jsp.java:107)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)发布于 2011-09-17 05:35:23
听起来你的会话快超时了。您需要强制用户重新登录,或者延长会话超时时间。
您可以通过编辑web.xml并添加以下内容来更改会话超时:
<session-config>
<session-timeout>60</session-timeout>
</session-config>这将为您提供60分钟的会话超时。-1表示没有超时。
发布于 2011-09-17 21:15:30
org.apache.jsp.homepage_jsp._jspService(homepage_jsp.java:107)上的
java.lang.NullPointerException
只有在很长一段时间后才会出现这种现象,这确实表明会话已超时。但是更改会话超时不是正确的解决方案。您的JSP中实际上有一个bug。
因为您使用的是老式的Java,而不是servlets之类的普通<% %>类来控制请求/响应,并在JSP中执行业务工作,所以更难确定NullPointerException的根本原因。您需要在服务器的工作目录中打开生成的homepage_jsp.java,然后转到第107行,最后将此行返回到您的homepage.jsp中,这样您就可以修复错误了。
也许你需要做一个request.getSession()而不是request.getSession(false),或者你需要在访问会话属性之前检查它是否不是null,等等。
https://stackoverflow.com/questions/7450608
复制相似问题