G
ghoulkar
Gast
Ich bekomme gelegentlich eine NullPointerException, die ich mir nicht erklären kann.
In den Tomcat logs steht folgendens:
localhost.2008-05-29.log:
29.05.2008 16:45:37 org.apache.catalina.core.StandardWrapperValve invoke
SCHWERWIEGEND: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.index_jsp._jspService(index_jsp.java:498)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
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:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
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:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Die Meldung im Browser war aufschlussreicher, habe ich aber leider nicht mehr zur Hand und da der Fehler nicht reproduzierbar ist, kann ich sie wohl erst nachliefern wenn sie das nächste Mal aufgetreten ist.
Ein Teil davon lautete:
An error occurred at line: 114 in the jsp file: /[...]
java.lang.NullPointerException
Die jsp sieht so aus:
<% HashMap<String,Vector<Getraenk>> getraenkeKarte = Events.getGetraenke(); %>
<%Vector<Getraenk> getraenke = getraenkeKarte.get("Warme Getraenke"); %>
Besagte Zeile 114:
<% for (int i=0; i<getraenke.size(); i++ ) { %>
und das sind die passenden Methoden dazu:
Eigentlich kann die Methode doch gar nicht null zurückgeben oder übersehe ich etwas?
Meistens reicht es die gleiche Seite nochmal aufzurufen um sie angezeigt zu bekommen. Ansonsten scheint nach einem Tomcat Neustart alles wieder in Ordnung, ist aber leider nicht so. Nach einer unbestimmten Zeit tritt der Fehler wieder auf.
Auf dem Server:
Apache Tomcat Version 6.0.16
Using JRE_HOME: [...]/jdk1.6.0_05/jre
Bei google sinds leider nur 9 Treffer, die mir nicht weiterhelfen.
Hat jemand eine Idee?
In den Tomcat logs steht folgendens:
localhost.2008-05-29.log:
29.05.2008 16:45:37 org.apache.catalina.core.StandardWrapperValve invoke
SCHWERWIEGEND: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.index_jsp._jspService(index_jsp.java:498)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
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:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
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:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Die Meldung im Browser war aufschlussreicher, habe ich aber leider nicht mehr zur Hand und da der Fehler nicht reproduzierbar ist, kann ich sie wohl erst nachliefern wenn sie das nächste Mal aufgetreten ist.
Ein Teil davon lautete:
An error occurred at line: 114 in the jsp file: /[...]
java.lang.NullPointerException
Die jsp sieht so aus:
<% HashMap<String,Vector<Getraenk>> getraenkeKarte = Events.getGetraenke(); %>
<%Vector<Getraenk> getraenke = getraenkeKarte.get("Warme Getraenke"); %>
Besagte Zeile 114:
<% for (int i=0; i<getraenke.size(); i++ ) { %>
und das sind die passenden Methoden dazu:
Code:
public static HashMap<String, Vector<Getraenk>> getGetraenke(){
HashMap<String, Vector<Getraenk>> getraenke = new HashMap<String, Vector<Getraenk>>();
HashMap<Integer, String> getraenkeart = getGetraenkeArt();
Iterator<Integer> artIter = getraenkeart.keySet().iterator();
while (artIter.hasNext()){
int next = artIter.next();
getraenke.put(getraenkeart.get(next), getGetraenke(next));
}
return getraenke;
}
public static Vector<Getraenk> getGetraenke(int getraenkeart_id){
Vector<Getraenk> getraenke = new Vector<Getraenk>();
Connection con = DbConnectionPool.getConnection();
String query = "[...];
try{
PreparedStatement pstmt = con.prepareStatement(query);
pstmt.setInt(1, getraenkeart_id);
ResultSet result = pstmt.executeQuery();
while (result.next()){
Getraenk g = new Getraenk(
result.get([...])
[...]
);
getraenke.add(g);
}
pstmt.close();
}catch(Exception e){
System.out.println(query);
e.printStackTrace();
}finally{
DbConnectionPool.returnConnection(con);
}
return getraenke;
}
Eigentlich kann die Methode doch gar nicht null zurückgeben oder übersehe ich etwas?
Meistens reicht es die gleiche Seite nochmal aufzurufen um sie angezeigt zu bekommen. Ansonsten scheint nach einem Tomcat Neustart alles wieder in Ordnung, ist aber leider nicht so. Nach einer unbestimmten Zeit tritt der Fehler wieder auf.
Auf dem Server:
Apache Tomcat Version 6.0.16
Using JRE_HOME: [...]/jdk1.6.0_05/jre
Bei google sinds leider nur 9 Treffer, die mir nicht weiterhelfen.
Hat jemand eine Idee?