J'ai regardé partout sur le Web afin de trouver une solution à mon problème, mais je n'avais pas de chance! : (
J'essaie de développer un servlet capable de se connecter à une base de données MySQL (pool de connexion) et de le déployer sur un serveur Tomcat 8. P>
J'ai un fichier context.xml dans meta -Inf comme ceci: p> dans web-inf fois j'ai créé le fichier web.xml: p> enfin, sur la classe de servlet, j'utilise: p> mais sur cette ligne, lorsque j'essaie d'obtenir une connexion de la source de données, je reçois l'exception suivante: P> java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'jdbc:mysql://xxx/myApp'
t org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2065)
at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:1939)
at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1412)
at DBPoolConnectionServlet.processRequest(DBPoolConnectionServlet.java:73)
...
Caused by: java.sql.SQLException: No suitable driver
3 Réponses :
On dirait que tu fais tout va bien, alors: p>
DriverClassName = "com.mysql.jdbc.Driver" (les capitales peuvent avoir une importance). P>
Vous placez le mysql-connecteur-java-5.1.34-bin.jar (il doit avoir une extension JAR à détecter dans tomcat / lib (ne le mettez pas sur votre chemin WebApp, il doit être chargé par Tomcat Class Charger) . p>
S'il ne vous aide pas et que vous commencez votre webApp de l'IDE. Essayez de démarrer la console de formulaire Tomcat et déployez votre application manuellement. Si vous avez plus d'un tomcat installé, assurez-vous que Catalina_Home est réglé sur celui que vous placez votre pot mysql. p>
J'ai essayé le déploiement manuel mais le résultat est le même. Dans tous les cas, aller plus loin dans la stacktrace, j'ai remarqué l'erreur suivante: causé par: java.sql.sqxception: pas de pilote approprié code>
Guy, merci beaucoup !!! Vous avez certainement résolu mon problème !!! : D Après avoir regardé autour de vous pour le pas de pilote approprié code> Exception, j'ai trouvé cette question: Stackoverflow.com/questions/5556664/... et en particulier Cette réponse: Stackoverflow.com/a/19259608/1133284 pour une raison quelconque, j'ai besoin d'appeler
classe.forname ( "com.mysql.jdbc.driver"); code>, même si je ne devrais pas !!! :)
Devez-vous appeler la classe.forname à chaque fois que vous avez besoin d'une connexion?
@RTF Non, je pense que vous avez juste besoin de besoin une fois, avant toute connexion!
Le problème possible pourrait être Tomcat rencontre plusieurs fois le pilote JAR pendant la classement. Le pilote JAR doit seulement être sous le répertoire de Tomcat lib et non sous Web-Inf / Lib Code> de votre application Web. Avoir le pot de conducteur à ces deux emplacements a abouti à des problèmes de chargement étrange de classe pour moi, qui se manifeste sous forme d'erreurs suggérant "pilote JDBC avec une classe vide et une URL NULL n'a pas pu être créée" em>. Voir cette réponse pour un problème similaire dans une base de données différente: https://stackoverflow.com/a/11604084/2200690 << / p>
Étapes pour réparer les problèmes de connexion NetBeans / MySQL et résoudre l'application déployée par défaillance sur le chemin de contexte /ra7web-1.0-snapshot, mais le contexte n'a pas pu démarrer:
Edit Server.xml sur votre serveur Tomée à l'aide d'un nom de chemin complet pour AppBase: P>
Ajoutez les éléments suivants à votre projet Web-XML: P>
ajoutez les éléments suivants à votre contexte.xml: p>
Les ressources suivantes.xml ont été générées, mais je devais éditer plusieurs back-slashes de sorte que cela correspond à mon URL: p>
Vous avez dit que vous avez placé le pilote JDBC dans le dossier Tomcat Lib, était-ce que le fichier JDBC .jar?
Oui, désolé, j'ai raté l'extension lors du processus de copie et de pâte, c'est un fichier JAR.