[JAVA] [tomcat4] database connexion
Résolu
Steefif
Messages postés
485
Date d'inscription
Statut
Membre
Dernière intervention
-
Steefif Messages postés 485 Date d'inscription Statut Membre Dernière intervention -
Steefif Messages postés 485 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je reviens vers vous une nouvelle fois.
J'espère que quelqu'un saura répondre à la question suivante.
Je vous présente d'abord mon code :
Ici, les properties sont bien chargés, en effet les différents System.out me renvoient ce qu'ils doivent me renvoyer.
Le problème vient de la ligne con= [..]
Je vous envoyer le stacktrace :
En fait tout se passe comme si mon tomcat ne voyait pas le driver.
hors j'ai bien le classes12.jar dans mes libs...
Pour info j'ai fait un test en placant un context dans server.xml de mon tomcat et en y accédant par une datasource et ça marche parfaitement avec les mêmes arguments.
Ma question est donc a suivante : pourquoi ne puis-je pas me connecter à ma base de données sans passer par le server.xml de mon tomcat???
Si vous avez des pistes, voire des réponses, je suis preneur!!!
Merci d'avance,
Steefif
Je reviens vers vous une nouvelle fois.
J'espère que quelqu'un saura répondre à la question suivante.
Je vous présente d'abord mon code :
synchronized private void dbConnect() throws UnavailableException { try { Properties dbprop = System.getProperties(); String driver = dbprop.getProperty("driverClassName"); String url = dbprop.getProperty("url"); String username = dbprop.getProperty("username"); String password = dbprop.getProperty("password"); System.out.println("driverClassName " + driver); System.out.println("url " + url); System.out.println("username " + username); System.out.println("password " + password); Class.forName(driver); System.out.println("apresforName"); System.out.println(Class.forName(driver)); con = DriverManager.getConnection(url, username, password); System.out.println("apresconnection"); } catch (Exception e) { e.printStackTrace(); } System.out.println("toto"); }
Ici, les properties sont bien chargés, en effet les différents System.out me renvoient ce qu'ils doivent me renvoyer.
Le problème vient de la ligne con= [..]
Je vous envoyer le stacktrace :
driverClassName oracle.jdbc.driver.OracleDriver url ici la bonne adresse username ici le bon username password ici le bon mot de passe apresforName class oracle.jdbc.driver.OracleDriver java.lang.NullPointerException at oracle.jdbc.ttc7.O3log.marshal(O3log.java:612) at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:257) at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:346) at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at com.thalesgroup.modulo.UserViewerServlet.dbConnect(UserViewerServlet.java:106) at com.thalesgroup.modulo.UserViewerServlet.init(UserViewerServlet.java:77) at javax.servlet.GenericServlet.init(GenericServlet.java:212) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:888) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:621) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:163) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:534) toto
En fait tout se passe comme si mon tomcat ne voyait pas le driver.
hors j'ai bien le classes12.jar dans mes libs...
Pour info j'ai fait un test en placant un context dans server.xml de mon tomcat et en y accédant par une datasource et ça marche parfaitement avec les mêmes arguments.
Ma question est donc a suivante : pourquoi ne puis-je pas me connecter à ma base de données sans passer par le server.xml de mon tomcat???
Si vous avez des pistes, voire des réponses, je suis preneur!!!
Merci d'avance,
Steefif
A voir également:
- [JAVA] [tomcat4] database connexion
- Gmail connexion - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Borland database engine - Télécharger - Édition & Programmation
- Eclipse java - Télécharger - Langages
7 réponses
Bonjour,
Avant d'exécuter le code dans une Servlet, as-tu essayé de le faire marcher dans une bête classe qui ne fait que ça?
Avant d'exécuter le code dans une Servlet, as-tu essayé de le faire marcher dans une bête classe qui ne fait que ça?
oui, dans une classe à part ca marche parfaitement
je l'exécute en tant qu'application et je me connecte sans soucis.
J'ai poursuivi mes recherches, mais toujours rien.
je vous tient au courant si je trouve.
je l'exécute en tant qu'application et je me connecte sans soucis.
J'ai poursuivi mes recherches, mais toujours rien.
je vous tient au courant si je trouve.
Je viens de trouver la solution.
En fait j'avais des acces concurentiels
(en plus des drivers...)
en gros j'avais un pool de connexion sur mon server.xml de mon tomcat et un acces direct par servlet.
et tomcat il aimait pas trop ça.
en tout cas merci de tes réponses.
EDIT : en fait non c'est pas ça, je rouvre la discussion
La vie c'est comme une boite de chocolat, on ne sait jamais sur quoi on va tomber.
En fait j'avais des acces concurentiels
(en plus des drivers...)
en gros j'avais un pool de connexion sur mon server.xml de mon tomcat et un acces direct par servlet.
et tomcat il aimait pas trop ça.
en tout cas merci de tes réponses.
EDIT : en fait non c'est pas ça, je rouvre la discussion
La vie c'est comme une boite de chocolat, on ne sait jamais sur quoi on va tomber.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'aurais bien essayé ton code dans un JSP mais je déteste Oracle ^.^
Hmmm ....
Ici il est fait référence à un problème de driver oracle :
https://community.oracle.com/tech/developers/discussion/256093/nullpointerexception-during-logon
Ici même chose un peu plus complet sur la résolution :
http://www.thatsjava.com/jdbc/86917/
Problème de driver semble-t-il.
Et vu le problème je dirais que tu as de l'Oracle9 ou supérieur ^^
Le loup, solitaire et mystérieux.
Hmmm ....
Ici il est fait référence à un problème de driver oracle :
https://community.oracle.com/tech/developers/discussion/256093/nullpointerexception-during-logon
Ici même chose un peu plus complet sur la résolution :
http://www.thatsjava.com/jdbc/86917/
Problème de driver semble-t-il.
Et vu le problème je dirais que tu as de l'Oracle9 ou supérieur ^^
Le loup, solitaire et mystérieux.
en effet ma ba&se est une oracle 9.2.0.1
J'ai testé tous les drivers du 8.7 à 10.2.0.1
directement pris du site oracle.
Ce qui est étonnant c'est que dans une appli java "standalone" ça marche parfaitement.
On pourrait donc croire que le probleme vient du lien tomcat-oracle.
Mais non car quand je monte un pool de connexion sur le server.xml du tomcat la conexion se fait sans problème.
J'ai aussi lu quelques part que le problème pouvait venir de droit d'acces dans le java.policy, mais je n'ai pas le droit de le modifier.
Aujourd'hui je vais continuer à chercher, mais sinon je pense que je vais devoir abandonner
J'ai testé tous les drivers du 8.7 à 10.2.0.1
directement pris du site oracle.
Ce qui est étonnant c'est que dans une appli java "standalone" ça marche parfaitement.
On pourrait donc croire que le probleme vient du lien tomcat-oracle.
Mais non car quand je monte un pool de connexion sur le server.xml du tomcat la conexion se fait sans problème.
J'ai aussi lu quelques part que le problème pouvait venir de droit d'acces dans le java.policy, mais je n'ai pas le droit de le modifier.
Aujourd'hui je vais continuer à chercher, mais sinon je pense que je vais devoir abandonner
Bon, probleme solved :
J'ai remis le driver de la 9.2.0.1 (ma version d'oracle)
J'ai laissé ma connection comme tel :
En fait, le probleme venait de la manière dont je recupérait mes parametres de connexions.
J'effacait les propriétés system sans m'en rendre compte d'ou les erreurs.
Merci pour tes réponses !!!
J'ai remis le driver de la 9.2.0.1 (ma version d'oracle)
J'ai laissé ma connection comme tel :
try { Properties prop = System.getProperties(); String driver = prop.getProperty("dbdriver"); String url = prop.getProperty("dburl"); String username = prop.getProperty("dbusername"); String password = prop.getProperty("dbpassword"); con = null; try { Class.forName(driver).newInstance(); } catch (Exception e) { System.err.println("can't load Oracle driver: " + e.getMessage()); } System.out.println("tentative connexion à la database"); try { System.out.println("DriverManager : " + DriverManager.getDrivers().nextElement().getClass() .getName()); con = DriverManager.getConnection(url, username, password); } catch (Exception e) { System.out.println("Failed to access DB at " + url); e.printStackTrace(); System.err.println("can't connect to the database"); } } catch (Exception e) { e.printStackTrace(); }
En fait, le probleme venait de la manière dont je recupérait mes parametres de connexions.
J'effacait les propriétés system sans m'en rendre compte d'ou les erreurs.
Merci pour tes réponses !!!