当网页长时间打开时抛出Nullpointerexception

时间:2011-09-16 21:33:50

标签: java apache jsp tomcat servlets

我正在使用Apache开发一个使用JSP和Servlets的网站 - tomcat 5.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)

2 个答案:

答案 0 :(得分:3)

听起来你的会话超时了。您需要强制用户再次登录,或延长会话超时。

您可以通过编辑web.xml并添加:

来更改会话超时
<session-config>
  <session-timeout>60</session-timeout>
</session-config>

这将为您提供60分钟的会话超时。 -1表示没有超时。

答案 1 :(得分:1)

java.lang.NullPointerException
    at org.apache.jsp.homepage_jsp._jspService(homepage_jsp.java:107)

这种情况仅在很长一段时间后才会发生,这确实表明会话已经超时。但是更改会话超时不是正确的解决方案。你的JSP中实际上有一个 bug

因为您使用旧式JSP scriptlet <% %>而不是普通的Java类(如servlets)来控制请求/响应并在JSP中执行业务,导致NullPointerException的根本原因更难实现。您需要在服务器的工作目录中打开生成的homepage_jsp.java并前往第107行,最后将此行追溯到您的homepage.jsp,以便您可以修复该错误。

也许你需要做一个request.getSession()而不是request.getSession(false),或者你需要在访问它之前检查一个会话属性是否null,等等。