IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

[Débutant] Problème de connexion à MySQL


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 38
    Par défaut [Débutant] Problème de connexion à MySQL
    Bonjour,

    j'essaie de créer, à titre d'exercice, une servlet se connectant à une base de données MYSQL et qui affiche le contenu d'une table à l'écran. Or, je n'arrive pas à me connecter à la base, alors que lorsque j'utilise le même driver dans une classe plus classique, je n'ai aucun problème.

    J'ai tenté de m'inspirer de ce qu'il y avait sur le forum et dans le tutoriel http://tomcat.apache.org/tomcat-5.5-...ces-howto.html mais je n'ai pas résolu mon problème, d'autant qu'il semble qu'à chaque nouvelle version d'Apache, les règles de configuration changent.

    Tout d'abord, voici les caractéristiques de développement de ma servlet :
    • Windows XP
    • Java EE 5 SDK
    • Apache Tomcat 5.5.28
    • MySQL 5.1.36
    • Eclipse Galileo


    J'ai tout d'abord mis le driver mysql-connector-java-5.1.10-bin dans $CATALINA\common\lib.

    J'ai ensuite créé un nouveau projet Projet Web dynamique dans Eclipse que j'ai intitulé EssaiConnexion.

    J'ai créé une classe Essai.java dans le package test, ma servlet, qui ne fait que se connecter à la base javatest et affiche le contenu de la table testdata.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    package test;
     
    import java.io.IOException;
     
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.sql.DataSource;
     
    import com.mysql.jdbc.Connection;
     
    /**
     * Servlet implementation class Essai
     */
    public class Essai extends HttpServlet {
    	private static final long serialVersionUID = 1L;
     
    	/**
             * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
             */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
    		try{
    		Context initCtx = new InitialContext();
    		Context envCtx = (Context) initCtx.lookup("java:comp/env");
    		DataSource ds = (DataSource)
    		  envCtx.lookup("jdbc/Essai");
     
    		Connection conn = (Connection) ds.getConnection();
     
            // à compléter
     
    		conn.close();
    		}
    		catch(Exception e){
    			e.printStackTrace();
    		}
     
    	}
    }
    Dans le répertoire META-INF, j'ai créé le fichier context.xml, qui contient les informations suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="UTF-8"?>            
    <Context>
      <Resource name="jdbc/Essai" auth="Container"
                type="javax.sql.DataSource" username="toto" password="sesame"
                driverClassName="com.mysql.jdbc.Driver" url="com.mysql.jdbc.Driver"
                maxActive="8" maxIdle="4"/>
    </Context>
    [NB : j'ai un avertissement Eclipse car il n'y a ni DTD ni schema associé, mais je ne pense pas que ce soit la cause du problème. Ceci dit, si quelqu'un peut me dire comment éviter cet avertissement, je suis preneuse.
    Par ailleurs, que mettre dans l'attribut auth - c'est l'auteur de quoi qu'il faut renseigner ?
    Enfin, les informations ci-dessus sont-elles complètes ?]

    J'ai également modifié le fichier web.xml en ajoutant les lignes ci-dessous sous la balise <web-app>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <resource-ref>
    	<description>
    	    Lien vers la base javatest
    	</description>
    	<res-ref-name>
    	    jdbc/Essai
    	</res-ref-name>
    	<res-type>
    	    javax.sql.DataSource
    	</res-type>
    	<res-auth>
    	    Container
    	</res-auth>
    </resource-ref>
    Quand j'essaie d'exécuter, j'obtiens les erreurs suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.mysql.jdbc.Driver' for connect URL 'com.mysql.jdbc.Driver'
    	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1150)
    	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
    	at test.Essai.doGet(Essai.java:32)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: java.sql.SQLException: No suitable driver
    	at java.sql.DriverManager.getDriver(Unknown Source)
    	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1143)
    	... 18 more
    J'ai ensuite ajouté C:\apache-tomcat-5.5.28\common\lib\mysql-connector-java-5.1.10-bin.jar au CLASSPATH de Windows, mais cela n'a rien changé...

    Merci par avance de votre aide et de votre indulgence :-)

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    Tu t'es trompé dans le fichier context.xml la propriété "url" n'est pas bonne (c'est le driver que tu as mis) tu devrais avoir quelque chose du genre "jdbc:mysql://localhost:3306/mysql".

    C'est exactement ce que te dit la stacTrace
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 38
    Par défaut
    Merci de ta réponse, c'était ça.
    En conclusion : On peut être intelligent toute sa vie et stupide un instant :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PEAR][DB] PHPonTrax : problème de connexion à mysql
    Par Ttienne dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/10/2006, 12h40
  2. Problèmes de connexion à MySQL ?
    Par DiabloZizi dans le forum Débuter
    Réponses: 3
    Dernier message: 03/09/2006, 20h21
  3. [OLEANE] Problème de connexion MySQL
    Par Tocraz dans le forum Autres hébergeurs
    Réponses: 3
    Dernier message: 14/06/2006, 09h47
  4. [débutant] problème de connexion au serveur local
    Par iftolotfi dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 02/06/2006, 08h43
  5. [dreamweaver] problème de connexion Mysql avec dreamweaver
    Par goma771 dans le forum Dreamweaver
    Réponses: 4
    Dernier message: 30/01/2006, 14h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo