Netbeans に Web アプリケーションがあり、メソッド (私のメソッド) を使用してクラスからユーザー名、タイトルなどのデータを取得するいくつかの jsp ページを作成しました。
また、MySQL を使用してユーザーをテーブルに保存しました。(ユーザーのログイン後に) ユーザー名を取得するには、メソッド getUsername() を使用します。
私のjspページには、次のコードがあります。
<%UserBean currentUser=(UserBean)(session.getAttribute("currentSessionUser"));%> <h1><%= currentUser.getUsername() %> </h1>
userBean はクラスなどです。すべてがスムーズに実行されますが、時々 (ブラウザからアプリケーションをしばらく使用しないと (15 ~ 20 分? わかりません)、これが発生することに気付きました)エラー状態
HTTP ステータス 500 - java.lang.NullPointerException
そしてTomcatのログファイルが印刷されます
org.apache.catalina.core.StandardWrapperValve が SEVERE を呼び出します: サーブレット [jsp] の Servlet.service() がパス [/APle] のコンテキストで例外 [java.lang.NullPointerException] を根本原因 java.lang.NullPointerException でスローしました
at org.apache.jsp.welcome_jsp._jspService(welcome_jsp.java:96)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
96行目のwelcome_jsp.javaファイルを調べます。これは、ユーザー名を取得する方法です。
out.print( currentUser.getUsername() );
エラーが発生する理由は、メソッドが Null を返すためだと思います..しかし、なぜこれが起こっているのでしょうか? アプリケーションを再度デプロイすると、すべてが正常に実行されます!
ありがとうございました!!