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

Servlets/JSP Java Discussion :

[pool de connexion] avec mysql et eclipse


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 131
    Points : 82
    Points
    82
    Par défaut [pool de connexion] avec mysql et eclipse
    Bonjour,

    J'ai un mal fou à configurer mon connecting pool et là, je craque un peu. Il faut dire que je lutte également contre Tomcat et son interface d'administration, j'ai fini par configurer server.xml à la main.

    bon regardons ça ensemble :

    server.xml d'abord :

    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
    44
    45
    46
     
    <?xml version="1.0" encoding="UTF-8"?>
    <Server>
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
      <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
      <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
      <GlobalNamingResources>
        <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
        <Resource auth="Container" 
        	description="User database that can be updated and saved" 
       	 	factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
        	name="UserDatabase" pathname="conf/tomcat-users.xml" 
        	type="org.apache.catalina.UserDatabase"/>
        <Resource driverClassName="com.mysql.jdbc.Driver" 
        	maxActive="8" maxIdle="8" maxWait="10000" 
        	name="jdbc/pano" 
        	password="tvbuilder" 
        	type="javax.sql.DataSource" 
        	url="jdbc:mysql://mercure.unige.ch/InformationPanneau" 
        	username="tvbuilder" 
        	validationQuery="SELECT 1"/>
      </GlobalNamingResources>
      <Service name="Catalina">
        <Connector connectionTimeout="20000" 
        	maxHttpHeaderSize="8192" 
        	maxSpareThreads="75" 
        	maxThreads="150" 
        	minSpareThreads="25" 
        	port="8080" 
        	redirectPort="8443">
        </Connector>
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443">
        </Connector>
        <Engine defaultHost="localhost" name="Catalina">
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
          <Host appBase="webapps" name="localhost">
          	<Context docBase="AffichageWeb" path="/AffichageWeb" reloadable="true" source="org.eclipse.jst.j2ee.server:AffichageWeb">
          	  <ResourceLink
        		global="jdbc/pano"
        		name="jdbc/PanneauDAffichage"
        		type="javax.sql.DataSource"/>
          	</Context>
          </Host>
        </Engine>
      </Service>
    </Server>
    Ensuite la méthode qui appelle ma base de données pour la première fois :

    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
     
    public boolean verifyLogin ( String login, String password )
    			throws AffichageException
    {
      Connection connection = null;
      ResultSet rs = null;
      boolean ok = false;
     
      String query = "SELECT * FROM Login WHERE (login=? AND password = PASSWORD (?)) ";
     
      try
        {
    	connection = ConnectionManagerJdbc.getInstance( ).getConnection( );
    	PreparedStatement ps = connection.prepareStatement( query );
    	ps.setString( 1, login );
    	ps.setString( 2, password );
    	rs = ps.executeQuery(  );
     
    	rs.first( );
    	if ( rs.isFirst( ) )
     	{
    	  ok = true;
    	}
       }
       catch ( SQLException e )
      {
    	log.error( "LoginJdbc :: verifyLogin :: " + e.toString( ) );
      }
      finally
      {
        closeConnection( connection );
      }
      return ok;
    }
    ma connexion en elle-même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void initDataSource() {
    try 
     {
      Context ctx = new InitialContext();
      fDataSource = (DataSource) ctx.lookup(DATASOURCE);
      log.info("Connection par datasource");
      } catch (NamingException e) {
    	log.error("Erreur JNDI : " + e);
    	return;
      }
    }
    enfin j'utilise le connectJ : mysql-connector-java-3.1.14-bin.jar qui se situe dans le common/lib de tomcat
    et j'utilise tomcat 5.5.9

    Où est-ce que j'ai complètement faux ? Je vous remercie de votre aide, j'aimerai tellement passé à l'étape suivante

  2. #2
    Membre du Club
    Profil pro
    xxx
    Inscrit en
    Décembre 2004
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : xxx

    Informations forums :
    Inscription : Décembre 2004
    Messages : 51
    Points : 48
    Points
    48
    Par défaut
    Bonjour,
    il me semble qu'il manque au moins la référence au JNDI : name="jdbc/PanneauDAffichage"

    dans l'initialisation du DataSource.
    fDataSource = (DataSource) ctx.lookup(DATASOURCE);
    doit plutot être du genre :
    fDataSource = (DataSource) ctx.lookup(jdbc/PanneauDAffichage);

    Bon courage

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 131
    Points : 82
    Points
    82
    Par défaut
    Merci.

    DATASOURCE contient le nom du JNDI qui est dans un fichier conf. Il vaut :
    datasource=java:comp/env/jdbc/PanneauDAffichage

  4. #4
    Membre du Club
    Profil pro
    xxx
    Inscrit en
    Décembre 2004
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : xxx

    Informations forums :
    Inscription : Décembre 2004
    Messages : 51
    Points : 48
    Points
    48
    Par défaut
    oups pardon
    par contre avez vous essayé d'enlever java:comp ???

    perso nous avons une connexion a une base mysql et nous n'utilisons pas java;comp

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 131
    Points : 82
    Points
    82
    Par défaut
    J'étais entrain de le faire... Je vais vérifier que tous les autres paramètres sont en place, mais ça n'a pas l'air de fonctionner.

    PS : vous ne pouviez pas savoir pour DATASOURCE.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 131
    Points : 82
    Points
    82
    Par défaut
    mon ressourcelink a disparu... c'est aussi contre ça que je me bats depuis hier... mes configurations de server.xml disparaisse brusquement.

  7. #7
    Membre du Club
    Profil pro
    xxx
    Inscrit en
    Décembre 2004
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : xxx

    Informations forums :
    Inscription : Décembre 2004
    Messages : 51
    Points : 48
    Points
    48
    Par défaut
    après vérif sur mon appli, je trouve aussi un bout de code dans le web.xml du projet :
    <resource-ref>
    <description>Oracle Datasource example</description>
    <res-ref-name>jdbc/Historique_tomcat</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>

    où Hitsorique_tomcat est le nom de mon Datasource

    et pour être plus précise voici mon server.xml :

    <Context path="/Historique" docBase="Historique" debug="0" reloadable="true" >


    <Resource name="jdbc/Historique_tomcat" auth="Container" type="javax.sql.DataSource"/>

    <ResourceParams name="jdbc/Historique_tomcat">

    <parameter>
    <name>username</name>
    <value>*****</value>
    </parameter>

    <parameter>
    <name>password</name>
    <value>****</value>
    </parameter>

    <parameter>
    <name>driverClassName</name>
    <value>oracle.jdbc.driver.OracleDriver</value>
    </parameter>
    <parameter>
    <name>url</name>
    <value>jdbc:oracle:thin:@fangorn.univ-tlse1.fr:15**:***</value>
    </parameter>
    <parameter>
    <name>maxActive</name>
    <value>20</value>
    </parameter>
    <parameter>
    <name>maxIdle</name>
    <value>10</value>
    </parameter>
    <parameter>
    <name>maxWait</name>
    <value>-1</value>
    </parameter>



    </ResourceParams>
    </Context>


    enfin la libraire des drivers, où l'avez vous mise ? dans common/lib ?
    pouvez vous nou donner votre erreur ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 131
    Points : 82
    Points
    82
    Par défaut
    désolée, j'ai oublié de donner mon erreur !

    voici l'erreur avec le dernier test (donc sans le java:comp:env)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javax.naming.NameNotFoundException: Le Nom jdbc n'est pas lié à ce Contexte
    mon driver est dans common/lib en effet.

    edit : toujours un probleme avec mon RessourceLink pour l'instant. je corrige.

  9. #9
    Membre du Club
    Profil pro
    xxx
    Inscrit en
    Décembre 2004
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : xxx

    Informations forums :
    Inscription : Décembre 2004
    Messages : 51
    Points : 48
    Points
    48
    Par défaut
    ok, avez vous essayer de remettre leslignes correspondantes dans le fichier web.xml ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 131
    Points : 82
    Points
    82
    Par défaut
    Je ne peux pas tester votre proposition, j'ai des problèmes avec Eclipse qui me change mes valeurs dans server.xml. Il me force la configuration (mais pas toujours ), dès qu'Eclipse aura fini de me casser les pieds, je passerai avec plaisir à votre message !!!

    edit : à moins que... ça me permette de contourner server.xml ???

  11. #11
    Membre du Club
    Profil pro
    xxx
    Inscrit en
    Décembre 2004
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : xxx

    Informations forums :
    Inscription : Décembre 2004
    Messages : 51
    Points : 48
    Points
    48
    Par défaut
    vous utilisez eclipse wtp ? couplé avec un tomcat ?
    si oui j'ai peut etre eu le même problème !!!

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 131
    Points : 82
    Points
    82
    Par défaut
    exactement !

  13. #13
    Membre du Club
    Profil pro
    xxx
    Inscrit en
    Décembre 2004
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : xxx

    Informations forums :
    Inscription : Décembre 2004
    Messages : 51
    Points : 48
    Points
    48
    Par défaut
    oualala alors là STOP
    alors d'après ce que j'ai pu comprendre de wtp, il n'agit pas directement sur le serveur tomcat, il utiilse des fichiers de conf particuliers.
    Sinon une solution de contournement est de "copier/coller" votre appli à la main dans Tomcat, vous voyez ce que je veux dire ?
    avez vous msn ? ca pourrait etre plus simple pour communiquer

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 131
    Points : 82
    Points
    82
    Par défaut
    oui, je comprends mais c'est quand même bien dommage dans ce cas !

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 131
    Points : 82
    Points
    82
    Par défaut
    Après de multiples rebondissements (merci à Nini. Désolée je suis tombée malade), je crois que j'ai réussi à isoler le problème :

    si je fais ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String query = "SELECT * FROM Login WHERE (login='" + login + "' AND password = PASSWORD ('" + password + "'))";
    connection = ConnectionManagerJdbc.getInstance( ).getConnection( );
    PreparedStatement ps = connection.prepareStatement( query );
    rs = ps.executeQuery(  );
    Ca fonctionne.

    Si je fais celui là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    String query = "SELECT * FROM Login WHERE (login= ? AND password = PASSWORD ( ? ))";
     
    try
    {
    connection = ConnectionManagerJdbc.getInstance( ).getConnection( );
    PreparedStatement ps = connection.prepareStatement( query );
    ps.setString( 1, login );
    ps.setString( 2, password );
     
    rs = ps.executeQuery(  );
    Ca ne fonctionne pas.

    Or je ne vois pas l'intérêt de passer par un PreparedStatement si je ne peux pas setter mes variables par les méthodes appropriées !!!

    Alors je n'ai pas de messages d'erreur, c'est juste que dans le premier cas, on trouve mon utilisateur, dans le second cas, il ne le trouve pas.

  16. #16
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    En effet, c'est bizarre.

    J'ai une question :

    Dans ton deuxième exemple, je vois un bout de try { mais pas la fin ?

    Si tu as ensuite
    }
    catch(Exception e)
    {
    }

    Tu as peut être une erreur qui est masquée ?

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 131
    Points : 82
    Points
    82
    Par défaut
    Non, pour lui le ResultSet est vide, c'est tout

    J'ai repris un Connector JDBC de génération 3, et ça a fonctionné... bizarre cet effet de bord avec les nouvelles versions

Discussions similaires

  1. Erreur de connexion avec Mysql -> Driver bugué
    Par kedare dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 07/02/2007, 08h47
  2. Pas de connexion avec MySQL ?
    Par spekal dans le forum JDBC
    Réponses: 15
    Dernier message: 23/01/2007, 18h38
  3. Pool de connexion avec struts
    Par vikrem dans le forum Struts 1
    Réponses: 6
    Dernier message: 27/08/2006, 23h25
  4. [SGBD] Problème de connexion avec mysql
    Par weshwesh dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 29/06/2006, 10h30
  5. Pool de connexion avec Tomcat 5.5
    Par partyboy dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 13/06/2005, 16h33

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