[java] Nullpointerexception als servlet, vanuit console goed

Pagina: 1
Acties:

  • Icheb
  • Registratie: Augustus 2001
  • Laatst online: 12-05 18:12
Ik kan me voorstellen dat niemand zin heeft om te helpen bij een huiswerk opdracht, maar toch probeer ik het maar, doordat ik inmiddel echt geen idee meer heb waar het probleem kan zitten.

Op dit moment ben ik bezig met het 'leren' van werken met java servlets, maar op dit moment loop ik nu al dagen mijn hoofd te breken op het volgende probleem:
Ik heb een simpel java programma'tje, dat verbinding maakt met een MySQL database en daar wat query's op doet, en daarvan de resultaten op het scherm zet.
Met code als hetvolgende in de main():
Java:
1
2
// Console query (ja, die is lelijk) voor die join
System.out.println(Db.doConsoleQuery("select cijfer.waardering,cijfer.vak,team.naam from team,cijfer where team.studentnr=cijfer.studentnummer"));

De doConsoleQuery is een functie uit een andere class, die ook in deze .java file staat.
Dit werkt allemaal prima.

Maar nu wil ik exact hetzelfde bereiken als Java Servlet, maar nu krijg ik bij het aanroepen van de connectie (die succesvol ge-initialiseert is eerder) een mooie bak foutmeldingen terug:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
    at DbManager.doQuery(hello.java:85)
    at DbManager.doConsoleQuery(hello.java:137)
    at hello.doGet(hello.java:39)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
...


Om een idee te geven van de code heb ik alles even online gegooid.
Ik weet dat de MySQL afhandeling een beetje smerig gemaakt is, op dit moment. Het is de bedoeling dat ik dit nog verander, maar ik wilde het eerst als servlet aan de praat hebben.

Kan iemand mij een harde trap in de goede richting geven ?

De source staat online op de volgende locaties:
De console versie (die zonder problemen werkt): http://people.zeelandnet....va/BijlageBopdracht2.java
De servlet versie (waar er op dit moment nog problemen mee zijn, functie is op dit moment niet hetzelfde): http://people.zeelandnet.nl/sebsoft/java/hello.java

sebsoft.nl


Verwijderd

zal wel liggen aan dat je mysql package niet in het classpath staat van de server

  • Icheb
  • Registratie: Augustus 2001
  • Laatst online: 12-05 18:12
Dit zou mij toch een beetje vreemd lijken.
De server en de bak waarop het console programma getest is, zijn dezelfde machine.
De MySQL .jar file staat in de jre van de SDK, in de /common/lib van Tomcat, en inmiddels op nog talloze plaatsen waar hij niet zou hoeven te staan. Zonder effect.

sebsoft.nl


  • nxt
  • Registratie: November 2001
  • Laatst online: 04-02 09:36

nxt

in de DBManager class staat

code:
1
2
3
4
5
6
7
8
9
try {
    Class.forName(driverName); 
    connection = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
                        Waarde= "Driver niet gevonden!\n" + e;
 } catch (SQLException e) { 
  Waarde= "Geen verbinding kunnen maken met de database.\n" + e ;

}


als je dit nu eens vervangt met
code:
1
2
3
4
5
6
7
8
9
10
try {
     Class.forName(driverName);
     connection = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
     e.printStackTrace();
     Waarde= "Driver niet gevonden!\n" + e;
} catch (SQLException e) {
     e.printStackTrace(); 
     Waarde= "Geen verbinding kunnen maken met de database.\n" + e ;
}

je doet nl niets met de exception, en het afdrukken van de stacktrace zou een hint moeten geven over waarom het niet werkt.
(de locatie van de nullpointer exception doet nl vermoeden dat de connectie niet tot stand gekomen is)

  • Icheb
  • Registratie: Augustus 2001
  • Laatst online: 12-05 18:12
Met dank aan die stacktrace en het herinstalleren van Tomcat, werkt het nu.
Het grootste probleem was denk ik dat Tomcat om één of andere reden de MySQL jar niet wilde gebruiken, terwijl deze toch op de juiste plek stond. 8)7
Tevens was er misschien een 'heel klein probleempje' met een server.xml bestand dat niet helemaal goed in elkaar zat.

Bedankt in ieder geval :) _/-\o_

sebsoft.nl