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
    Invité
    Invité(e)
    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 averti
    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
    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
    Invité
    Invité(e)
    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 averti
    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
    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
    Invité
    Invité(e)
    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
    Invité
    Invité(e)
    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 averti
    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
    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
    Invité
    Invité(e)
    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 averti
    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
    Par défaut
    ok, avez vous essayer de remettre leslignes correspondantes dans le fichier web.xml ?

  10. #10
    Invité
    Invité(e)
    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 averti
    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
    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
    Invité
    Invité(e)
    Par défaut
    exactement !

  13. #13
    Membre averti
    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
    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
    Invité
    Invité(e)
    Par défaut
    oui, je comprends mais c'est quand même bien dommage dans ce cas !

  15. #15
    Invité
    Invité(e)
    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
    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 ?

  17. #17
    Invité
    Invité(e)
    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