Avatar billede luctatic Nybegynder
25. februar 2003 - 13:42 Der er 7 kommentarer og
2 løsninger

JSP, databasetilgang og controller klasser

Vi har en JSP side der benytter sig af en controller klasse i en ekstern pakke til at tilgå til en database. Koden den benytter er:

result = control.logon(email,password);


hvor control er vores kontrol-klasse (surprise) og logon-metoden kigger i en database og undersøger om brugeren eksisterer og om password er korrekt. Her kommer bare et lille problem, det virker nemlig ikke. Fejlen fra siden:

java.lang.NullPointerException
    at bilServer.DB_Con.exeQuery(DB_Con.java:75)
    at bilServer.Main_control.logon(Main_control.java:139)
    at bilServer.JSP_Control.logon(JSP_Control.java:16)
    at org.apache.jsp.TjekLogin$jsp._jspService(TjekLogin$jsp.java:92)


Dvs at metoden kan få fat i alle klasser helt ned til den klasse der rent faktisk laver database opslaget, men et eller andet sted går det galt, og den får en tom String tilbage. Den string den får tilbage skulle sige enten om det er gået godt eller dårligt, og i tilfælde af fejl, hvad der er gået galt. Det sker bare ikke. Efter et par overvejelser er vi kommet til et par mulige grunde til hvorfor fejlen ligger der. Den første kom da vi kiggede nærmere på output - der stod nemlig:

Kunne ikke initialisere JDBC connection. java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Den meddelelse kommer fra den sidste klasse i fejlmeddelelsen, db_con, hvor den siger den ikke kan få forbindelse til databasen. Det sjove er bare, at vi også benytter os af en javaklient der GODT kan få forbindelse til databasen via db_con, og som ligger i en HELT anden pakke end den alle controller klasserne ligger i.


Spørgsmålet er så, ligger problemet i opsætningen af webserveren? Skal den have at vide noget specielt for at virke selvom den bare skal benytte sig af nogle andre klasser? DB_con ligger i WEB-INF sammen med controllerklasserne, og JSP-siden kan jo fint finde dem, bare ikke finde databasen.
Avatar billede arne_v Ekspert
25. februar 2003 - 13:52 #1
Din web app kan ikke se MySQL JDBC driveren.

Jar-filen med JDBC driveren skal ligges i web app'ens WEB-INF/lib !
Avatar billede disky Nybegynder
25. februar 2003 - 13:59 #2
Hvis du bruger tomcat har den til tider et problem med at forstå det alligevel, virker det ikke, udpakker du jar filen i WEB-INF/classes skuffen.

Så skulle det bare spille.
Avatar billede luctatic Nybegynder
25. februar 2003 - 14:12 #3
Yes - perfekt. Den skulle bare over i WEB-INF/lib. Det kommer til at blive et helvede når det hele skal lægges over på SUN ONE web-server tror jeg. I får lige et par point hver. Nu er vi i grunden blevet nysgerrige - er I ansat til at svare siden I altid er så hurtige?
Avatar billede arne_v Ekspert
25. februar 2003 - 14:21 #4
Det burde være helt simpelt at flytte det over på Sun ONE.

Du laver bare en war fil med det hele og deployer den på
Sun ONE.

JDBC drivere i WEB-INF/lib er en del af standarden, så det virker
også på Sun ONE.
Avatar billede arne_v Ekspert
25. februar 2003 - 14:23 #5
minapp.war kan f.eks. indeholde:

WEB-INF/classes/minpakke/minklasse.class
WEB-INF/web.xml
WEB-INF/lib/jdbcdriver.jar
minside.jsp

og så uploader og deployer man den ene fil og voila, så bør det virke !

På gode servere kan man endda hot-deploye altså uden at serveren skal
genstartes.
Avatar billede luctatic Nybegynder
25. februar 2003 - 14:25 #6
Ok, to små ting - en WAR laves hvordan, og hvad er det? En special slags jar? Har aldrig hørt om den.


Om det så er så nemt på SUN's egen webserver vil tiden jo vise :D
Avatar billede arne_v Ekspert
25. februar 2003 - 14:26 #7
Og nej - jeg er ikke ansat af Eksperten.
Avatar billede arne_v Ekspert
25. februar 2003 - 14:28 #8
En war fil er bare en jar fil og kan derfor laves med jar utility'en.

En war fil skal have en struktur som beskrevet i min 14:23:18 kommentar.

Hvis du bruger ant til at builde med, så har den et indbygget task til at
lave war filer med.

Nogle IDE'er kan også lave war filer.
Avatar billede luctatic Nybegynder
25. februar 2003 - 14:36 #9
Ok - det skal der leges med. Der takkes.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester