JDBC PostgreSQL

Résolu
Hello world! J'ai un petit soucis en login sur j2e, j'ai un method qui retourne un objet de type Users, en executant le main, tout va a merveille, mais l'execution en de l'application web, le method doPost de mon servlet releve des exceptions:

java.lang.ClassNotFoundException: org.postgresql.Driver
java.lang.NullPointerException
SELECT * FROM Users WHERE idUsers=1 AND pass=MD5('1234Azerty$')
 at services.dao.General.select(General.java:42)
 at services.models.LoginModel.login(LoginModel.java:15)
 at controllers.Login.doPost(Login.java:56)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
 at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
 at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589)
 at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
 at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 at java.base/java.lang.Thread.run(Thread.java:832)
java.lang.NullPointerException
 at services.dao.Connexion.clear(Connexion.java:37)
 at services.models.LoginModel.login(LoginModel.java:22)
 at controllers.Login.doPost(Login.java:56)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
 at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
 at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589)
 at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
 at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 at java.base/java.lang.Thread.run(Thread.java:832)

1 réponse

  1. Modérateur
    Bonjour,

    Je dirais que le jar du driver n'est pas dans le classpath du serveur, tu l'as probablement ajouté manuellement dans ton IDE et c'est pour ça que le main() fonctionne mais une fois dans le serveur cette configuration n'est plus prise en compte.

    Selon de quel serveur on parle et de la manière dont il est démarré il peut y avoir plusieurs façons de résoudre le problème, de manière générale je dirais que le jar du driver devrait être embarqué dans le war de l'application.
    1. J'utilise eclipse, et tomcat 9 pour le serveur, c'est mon 2eme projet avec un IDE parcequ'avant je n'utilisait que VS Code, et je compilait manuellement alors, Eclipse est encore nouveau pour moi, ... Et comment l'embarquer dans le war?
    2. Modérateur
      @Heriniaina1905Un war c'est juste un fichier zip (comme un jar d'ailleurs) tu peux le décompresser et le recompresser avec n'importe quel outil (7zip, WinRar...)

      Il faut mettre le jar dans le dossier WEB-INF/lib
    3. D'accord! Je vais le faire. Merci :-)
    4. Je vous remercie, maintenant, ca marche :-)