michmoel Skrevet 14. juli 2008 Del Skrevet 14. juli 2008 Hei, jeg sitter å lager en liten web applikasjon i jsp. Problemet mitt er at jeg får NullPointerException. CLASSPATH er satt riktig. Jeg får ikke dette problemet når jeg kjører kode fra en testklasse i vanlig java, kun når jeg prøver fra en jsp-fil. Dette er selv om både jsp-klassen og java-klassen kaller den samme statiske metoden DBConnect.validateUser() som tar seg av alt det databaserelaterte. Noen som har peiling på hva dette kan ha seg? På forhånd takk =) //Fra DBConnect.java: //Statisk metode som kobler til databasen og returnerer et Connection object public static Connection getConnection(){ Connection c = null; try { Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); c = DriverManager.getConnection("jdbc:derby:nwdb"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (ArrayIndexOutOfBoundsException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return c; } //Metode som sjekker om brukernavn og passord finnes i databasen og returnerer isåfall ID-nummeret til brukeren. public static int validateUser(String stm1, String stm2) { Connection c = getConnection(); ResultSet rs = null; try{ //linje 80 PreparedStatement s = c.prepareStatement("SELECT id, username, password FROM users WHERE username = ? and password = ?"); s.setString(1, stm1); s.setString(2, stm2); rs = s.executeQuery(); while(rs.next()) return rs.getInt("id"); closeConnection(c, s, rs); }catch(SQLException e){ System.err.println("Det ble noe SQL-trøbbel; nærmere bestemt " + e); } return 0; } //Liten klasse for å teste dette, denne funker fint. public class Whatever { public static void main (String[] args){ System.out.println("Vi tester loginvalidering: "); System.out.println(DBConnect.validateUser("test", Hash.md5("test"))); } } //Jsp kode for innlogging, denne kaller på akkurat samme metoden som den lille testklassen, men denne funker ikke. <%String error = "";%> <%@ page import="tools.DBConnect"%> <%@ page import="tools.Hash"%> <%@ page import="java.sql.SQLException"%> <% if(request.getParameter( "nypost" ) != null) { int id = 0; String username = ""; String password = ""; username = request.getParameter( "username" ); password = Hash.md5(request.getParameter( "password" )); id = DBConnect.validateUser(username, password); if(id > 0){ request.getSession().setAttribute("sessionid", id); response.sendRedirect("main.jsp"); }else { error = "Feil brukernavn eller passord, vennligst prøv igjen"; } } %> Feilmelding fra tomcat: 14.jul.2008 13:01:56 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet jsp threw exception java.lang.NullPointerException at tools.DBConnect.validateUser(DBConnect.java:80) at org.apache.jsp.index_jsp._jspService(index_jsp.java:94) 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(Unknown Source) java.sql.SQLException: Database 'nwdb' not found. at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source) at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source) at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source) at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source) at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source) at org.apache.derby.impl.jdbc.EmbedConnection.handleDBNotFound(Unknown Source) at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source) at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown Source) at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown Source) at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source) at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source) at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at tools.DBConnect.getConnection(DBConnect.java:33) at tools.DBConnect.validateUser(DBConnect.java:77) at org.apache.jsp.index_jsp._jspService(index_jsp.java:94) 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(Unknown Source) Caused by: java.sql.SQLException: Database 'nwdb' not found. at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source) ... 35 more Lenke til kommentar
pgdx Skrevet 15. juli 2008 Del Skrevet 15. juli 2008 Denne er jo ganske avslørende: java.sql.SQLException: Database 'nwdb' not found. Lenke til kommentar
michmoel Skrevet 15. juli 2008 Forfatter Del Skrevet 15. juli 2008 Denne er jo ganske avslørende:java.sql.SQLException: Database 'nwdb' not found. Ja, men hvorfor oppstår den bare når jeg kaller metoden som foretar seg databaseoperasjonene fra en jsp-klasse, og ikke når jeg kaller den fra en vanlig java-klasse? Lenke til kommentar
jurg Skrevet 15. juli 2008 Del Skrevet 15. juli 2008 Denne er jo ganske avslørende:java.sql.SQLException: Database 'nwdb' not found. Ja, men hvorfor oppstår den bare når jeg kaller metoden som foretar seg databaseoperasjonene fra en jsp-klasse, og ikke når jeg kaller den fra en vanlig java-klasse? Point of execution? Prøvd å spesifisere full path til databasen? Lenke til kommentar
michmoel Skrevet 15. juli 2008 Forfatter Del Skrevet 15. juli 2008 (endret) DOH! Takk for hjelpen, det var selvfølgelig det som skulle til -.- usj, mange bortkastede timer på feilsøking der gitt...Men mange takk, det kunne sikkert fort blitt flere timer med headbanging Endret 15. juli 2008 av michmoel Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå