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

Tomcat et TomEE Java Discussion :

Perte de lien entre TOMCAT et BD


Sujet :

Tomcat et TomEE Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Perte de lien entre TOMCAT et BD
    Bonjour,

    Je fais tournée une appli sous tomcat utilisant une bd mysql 4, mais regulierement le lien entre la bd et tomcat ne se fais plus et je suis obligé de redémarrer tomcat, pas forcement evident quand ca devient journalier et que je n'ai pas forcement acces, meme a distance au serveur.

    Quelqu'un peut il m'aider?

  2. #2
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Salut je poste juste pour dire que j'ai exactement le même problème et que j'étais sur le point de créer un sujet identique :p.
    J'avais le même problème dans mes servlet après un certain temps d'inactivité la connexion se fermait. Il fallait donc faire Connexion conn = ds.getConnexion() pour rafraichir la connexion. Tu peux essayer ça si seule ta servlet a besoin de la connexion.
    Si comme moi la connexion qui se ferme est la connexion demandée par JAAS, bienvenue au club comment demander à JAAS de rafraichir sa connexion?

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    EN faite apres différent essai et changement de SGBD(passé sous postgres) le probleme est toujours présent. Mais je me suis apercu que lors du log si je cliquais plusieurs fois sur connexion au bout d'un temps le lien se faisais.

  4. #4
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    On avais trouvé une solution en faisant ça:
    http://www.developpez.net/forums/sho...d.php?t=556129
    Par contre dans mon cas la connexion était définitivement perdue donc je suis aps sur que tu aie le même probleme que moi avant. Enfin ça coûte rien d'essayer.
    Si ton serveur met juste un certain temps à retrouver une conneion, il s'agit peut etre d'un probleme avec les variables

    removeAbandonedTimeout
    et
    maxWait

    De ton datasource.
    Pour info mes valeurs sont
    removeAbandonnedTimout: 5
    maxWait: 5000

    Après c'est peut etre aussi un probleme avec ta base de données qui ne réagit pas assez vite mais ça m'étonnerait

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 143
    Points : 157
    Points
    157
    Par défaut
    Sur MySQL, tu peux également rajouter le paramètre "autoReconnect=true", j'ai déjà vu que sur du MySQL 4 ça résolvait ce type de problème.
    Pour l'utiliser, voir la doc :
    http://dev.mysql.com/doc/refman/5.0/...roperties.html

  6. #6
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    J'ai fais les modif voila l'erreur que j'ai maintenant...

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    ATTENTION: Select query error :
    Cannot open connection
    org.hibernate.exception.JDBCConnectionException: Cannot open connection
    	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
    	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
    	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:426)
    	at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
    	at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
    	at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
    	at org.hibernate.loader.Loader.doQuery(Loader.java:673)
    	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
    	at org.hibernate.loader.Loader.doList(Loader.java:2220)
    	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
    	at org.hibernate.loader.Loader.list(Loader.java:2099)
    	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
    	at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
    	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
    	at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
    	at module.core.DAOSkull.executeQuery(DAOSkull.java:139)
    	at module.authentification.AuthentificationController.login(AuthentificationController.java:54)
    	at module.authentification.AuthentificationView$1.onEvent(AuthentificationView.java:149)
    	at org.zkoss.zk.ui.impl.EventProcessor.process0(EventProcessor.java:190)
    	at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:138)
    	at org.zkoss.zk.ui.impl.EventProcessingThreadImpl.process0(EventProcessingThreadImpl.java:452)
    	at org.zkoss.zk.ui.impl.EventProcessingThreadImpl.run(EventProcessingThreadImpl.java:370)
    Caused by: java.sql.SQLException: Server connection failure during transaction. Due to underlying exception: 'java.net.SocketException: java.net.ConnectException: Connection refused: connect'.
     
    ** BEGIN NESTED EXCEPTION ** 
     
    java.net.SocketException
    MESSAGE: java.net.ConnectException: Connection refused: connect
     
    STACKTRACE:
     
    java.net.SocketException: java.net.ConnectException: Connection refused: connect
    	at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
    	at com.mysql.jdbc.Connection.createNewIO(Connection.java:2680)
    	at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
    	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    	at java.sql.DriverManager.getConnection(Unknown Source)
    	at java.sql.DriverManager.getConnection(Unknown Source)
    	at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
    	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
    	at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
    	at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
    	at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
    	at org.hibernate.loader.Loader.doQuery(Loader.java:673)
    	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
    	at org.hibernate.loader.Loader.doList(Loader.java:2220)
    	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
    	at org.hibernate.loader.Loader.list(Loader.java:2099)
    	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
    	at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
    	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
    	at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
    	at module.core.DAOSkull.executeQuery(DAOSkull.java:139)
    	at module.authentification.AuthentificationController.login(AuthentificationController.java:54)
    	at module.authentification.AuthentificationView$1.onEvent(AuthentificationView.java:149)
    	at org.zkoss.zk.ui.impl.EventProcessor.process0(EventProcessor.java:190)
    	at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:138)
    	at org.zkoss.zk.ui.impl.EventProcessingThreadImpl.process0(EventProcessingThreadImpl.java:452)
    	at org.zkoss.zk.ui.impl.EventProcessingThreadImpl.run(EventProcessingThreadImpl.java:370)
     
     
    ** END NESTED EXCEPTION **
     
     
    Attempted reconnect 3 times. Giving up.
    	at com.mysql.jdbc.Connection.createNewIO(Connection.java:2749)
    	at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
    	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    	at java.sql.DriverManager.getConnection(Unknown Source)
    	at java.sql.DriverManager.getConnection(Unknown Source)
    	at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
    	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
    	... 20 more

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 143
    Points : 157
    Points
    157
    Par défaut
    Et en parallèle tu peux accèder à ta base de données? Par exemple avec "MySQL Query Browser"?

    Ton Tomcat et ton MySQL sont sur 2 serveurs différents je suppose, tu as un firewall ou quelque chose comme ça entre les deux? J'ai déjà vu des admins réseaux qui interdisaient les connexions trop longues pour "des raisons de sécurité".

  8. #8
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    je peux accéder à ma base, pas de soucis, par le query browser ou encore par phpmyadmin.

    Et tomcat et mysql sont sur le meme serveur

  9. #9
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 143
    Points : 157
    Points
    157
    Par défaut
    Je viens de relire ta stacktrace : on dirait que tu n'utilises pas de pool de connexion... Comment est-ce que tu te connectes à ta base en fait?

  10. #10
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    je me connecte à l'aide d'hibernate.

    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
    <hibernate-configuration>
       <session-factory>
        	<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/intranetagda?autoReconnect=true</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password">xxxxx</property>
            <property name="connection.pool_size">4</property>
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
     
    		<mapping resource="asbo\map\Agency.hbm.xml" />
           	<mapping resource="asbo\map\Category.hbm.xml" />
            <mapping resource="asbo\map\GroupService.hbm.xml" />
            <mapping resource="asbo\map\Holiday.hbm.xml" />
            <mapping resource="asbo\map\Mail.hbm.xml" />
            <mapping resource="asbo\map\Message.hbm.xml" />
            <mapping resource="asbo\map\Order.hbm.xml" />
            <mapping resource="asbo\map\OrderRow.hbm.xml" />
        	<mapping resource="asbo\map\Product.hbm.xml" />
            <mapping resource="asbo\map\Right.hbm.xml" />
    		<mapping resource="asbo\map\Service.hbm.xml" />
            <mapping resource="asbo\map\Supplier.hbm.xml" />
            <mapping resource="asbo\map\Team.hbm.xml" />
            <mapping resource="asbo\map\User.hbm.xml" />
            <mapping resource="asbo\map\ContainUser.hbm.xml" />
        	<mapping resource="asbo\map\Directory.hbm.xml" />
            <mapping resource="asbo\map\Document.hbm.xml" />
            <mapping resource="asbo\map\Manager.hbm.xml" />
        </session-factory>

  11. #11
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 143
    Points : 157
    Points
    157
    Par défaut
    Dans ce cas utilise déjà un vrai pool de connexion, comme commons-dbcp.
    Le pool de connexion fournit avec Hibernate n'est pas du tout prévu pour une utilisation en prod, cf la doc d'Hibernate :
    http://www.hibernate.org/hib_docs/v3...iguration.html

    Hibernate's own connection pooling algorithm is however quite rudimentary. It is intended to help you get started and is not intended for use in a production system or even for performance testing. You should use a third party pool for best performance and stability.
    Quoi qu'il en soit il s'agit d'un problème Hibernate et non d'un problème Tomcat : en effet Tomcat propose un pool de connexion basé sur commons-dbcp, et tu ne l'utilises pas.

Discussions similaires

  1. Perte de lien entre generateur et champ
    Par asenaici dans le forum Administration
    Réponses: 4
    Dernier message: 02/02/2012, 13h04
  2. [XL-2003] Perte du lien entre bouton image et macro
    Par comme de bien entendu dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/05/2011, 10h59
  3. [TOMCAT] Probleme de lien entre les rapports
    Par skunkies dans le forum BIRT
    Réponses: 9
    Dernier message: 28/05/2009, 14h41
  4. Lien entre serveur Tomcat et MySQL
    Par artaud1 dans le forum JDBC
    Réponses: 1
    Dernier message: 29/06/2007, 06h42
  5. Lien entre Apache/Tomcat et Jonas
    Par saptmea dans le forum JOnAS
    Réponses: 2
    Dernier message: 24/01/2007, 14h49

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