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

Wildfly/JBoss Java Discussion :

Perte de connexion sous JBoss 7


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre actif
    Homme Profil pro
    Développeur Java/JavaEE
    Inscrit en
    Août 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java/JavaEE

    Informations forums :
    Inscription : Août 2014
    Messages : 194
    Points : 290
    Points
    290
    Par défaut Perte de connexion sous JBoss 7
    Bonjour,

    Je déploie une application web sous JBOSS installé sur un serveur distant, elle fonctionne très bien.
    Le problème c'est que lorsque j'accède a mon application après quelques heures de son déploiement (et quand aucun utilisateur n'interagie avec elle) je demande la page d'authentification elle est disponible mais quand je saisi le login et le mot de passe je reçois le message d'erreur d'authentification de mon système sachant que les données saisi sont correcte, je déploie de nouveau l'application j'essai de me connecté et la ça marche correctement. C'est comme ci mon serveur possède un délai précis(8 heurs par exemple) pour ne plus interagir avec la base de données quand quelqu'un n'accède plus à l'application web.
    Quelqu'un a une idée ???

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Ce ne serait pas une base MySQL par hasard ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Java/JavaEE
    Inscrit en
    Août 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java/JavaEE

    Informations forums :
    Inscription : Août 2014
    Messages : 194
    Points : 290
    Points
    290
    Par défaut
    Eh bien ne serais tu pas un magicien par hasard !! comme toujours droit au but
    En effet c'est une mysql. Il manque de la config ??

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Non non, je te jure, pas magicien du tout

    Oui, c'est un problème connu des bases de données MySQL.
    Généralement, en passant par un pool de connexions type c3p0 on règle le problème mais ce n'est peut-être pas possible dans ta configuration.
    Sinon, tu peux regarder la configuration de ta base, le paramètre wait_timeout (devrait valoir par défaut 28800 (8h))
    Sinon, il y a aussi un paramètre dans l'url de connexion autoReconnect=true (mais pas sûr que ça suffise)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Homme Profil pro
    Développeur Java/JavaEE
    Inscrit en
    Août 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java/JavaEE

    Informations forums :
    Inscription : Août 2014
    Messages : 194
    Points : 290
    Points
    290
    Par défaut
    Merci pour ta réponse.
    Je pense avoir choisi le 2eme axe qui concerne la variable wait_timeout, en fait j'ai essayé je la modifier à travers la variable interractive_timeout avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SET GLOBAL interractive_timeout=10;
    J'ai voulu la mettre à 10 pour tester le problème mais cette variable tiens sa valeur à 10 jusqu'à ce que j'accède à l'application pour se modifier à 20000(je pense que c'est sa valeur minimale) donc j'ai pas pu la tester maintenant par contre elle accepte une valeur supérieur à 20000 donc je l'est mis à 259200(3 jours) en espérant que ça va donné le bon résultat pour demain.
    Je te tiens au courant pour le résultat.
    Merci.

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    D'après la doc, ce serait plutôt wait_timeout qu'il faudrait modifier...
    Ceci dit, j'essayerais plutôt l'url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jdbc:mysql://localhost:3306/sakila?autoReconnect=true
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Pour que da datasource ne fournisse pas de connexion invalide, tu peux configurer une partie validation. Pour MySql, tu ajoutes une requête ("select 1") qui sera envoyée pour la validation. Ça donne quelque chose comme ça :

    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
     
    <subsystem xmlns="urn:jboss:domain:datasources:1.0">
        <datasources>
            <datasource jndi-name="java:jboss/datasources/MyDS" pool-name="ExampleDS">
                <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
                <driver>mysql</driver>
                <pool>
                    <min-pool-size>10</min-pool-size>
                    <max-pool-size>20</max-pool-size>
                </pool>
                <validation>  
                    <check-valid-connection-sql>select 1</check-valid-connection-sql>  
                </validation>  
                ...
            </datasource>
        </datasources>
    </subsystem>
    Dans l'élément validation, tu peux ajouter background-validation pour que la validation des connexions se fasse en arrière plan, plutôt qu'au moment de demander la connexion:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                <validation>  
                    <check-valid-connection-sql>select 1</check-valid-connection-sql>  
                    <background-validation>true</background-validation>
                </validation>

  8. #8
    Membre actif
    Homme Profil pro
    Développeur Java/JavaEE
    Inscrit en
    Août 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java/JavaEE

    Informations forums :
    Inscription : Août 2014
    Messages : 194
    Points : 290
    Points
    290
    Par défaut
    D'après la doc, ce serait plutôt wait_timeout qu'il faudrait modifier...
    C'est exacte mais pour pouvoir changer cette valeur il faut passer par la variable interractive_timeout j'ai trouvé ça ici

    jdbc:mysql://localhost:3306/sakila?autoReconnect=true
    tu veux dire ajouter "?autoReconnect=true" à l'url de la connexion ?

    Pour la connexion je n'utilise pas les datasources du standalone.xml (il fallait le faire oui mais le projet est un peu énorme pour tout changer maintenant) sinon j'utilise une simple connexion en singleton.

  9. #9
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Pour la connexion je n'utilise pas les datasources du standalone.xml
    Effectivement, cette information était intéressante à préciser. Je dirais même que ton titre prête à confusion, puisque ton problème n'a rien à voir avec jboss 7.

    j'utilise une simple connexion en singleton.
    ... c'est une application qui doit fonctionner avec plusieurs utilisateurs ???

  10. #10
    Membre actif
    Homme Profil pro
    Développeur Java/JavaEE
    Inscrit en
    Août 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java/JavaEE

    Informations forums :
    Inscription : Août 2014
    Messages : 194
    Points : 290
    Points
    290
    Par défaut
    ... c'est une application qui doit fonctionner avec plusieurs utilisateurs ???
    Oui plusieurs utilisateurs et plusieurs profils.

    Après avoir tester aujourd'hui le problème est encore la

    J'ai modifier la variable wait_timeout de MySql en lui passant 3 jours en paramètre, j'ai modifier l'url par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jdbc:mysql://localhost:3306/sakila?autoReconnect=true
    ça ne marche pas encore.

    Je tiens à vous informer que lors du passage de la méthode d'authentification j'ai eu une SQLException(malheureusement je n'affiche qu'un simple msg pour ça)
    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
     
    public class authentificationServices {
    	Connection conn = MyConnection.getInstance();
    	Statement ste;
     
    	public User authenticate(String login, String password) {
    		User found = null;
    		try {
     
    			PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement("select * from utilisateur where login = ? and password = ?");
    			pstmt.setString(1, login);
    			pstmt.setString(2, password);
    			ResultSet rs = pstmt.executeQuery();
     
    			while (rs.next()) {
    				found = new User(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6));
    			}
    		} catch (SQLException ex) {
    			System.out.println("id n'existe pas");
    			found = null;
    		}
    		if (found==null) {
    			System.out.println("user not found;");
    		}
    		else {
    			System.out.println("user is here");
    		}
    		return found;
    	}
    }
    Donc au niveau de la console j'ai eu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    id n'existe pas
    user not found

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Tu utilises hibernate avec un fichier hibernate.cfg.xml ?
    Si oui, je te conseille d'utiliser c3p0, j'avais contourné le problème comme ça à l'époque...
    Tu ajoutes le jar de c3p0 à ton /WEB-INF/lib (je ne sais plus s'il y a des dépendances, il me semble que non)
    Le fichier ressemble à ceci
    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
    <hibernate-configuration>
        <session-factory name="safeFactory">
            <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
            <property name="hibernate.connection.url">jdbc:mysql:///safe</property>
            <property name="hibernate.connection.username">toto</property>
            <property name="hibernate.connection.password">titi</property>
            <property name="hibernate.default_schema">safe</property>
            <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
            <property name="hibernate.show_sql">false</property>
            <property name="hibernate.connection.autocommit">false</property>
    
            <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>        
            <property name="hibernate.c3p0.min_size">5</property>
            <property name="hibernate.c3p0.max_size">20</property>
            <property name="hibernate.c3p0.timeout">60</property>
            <property name="hibernate.c3p0.max_statements">50</property>
            
            <mapping resource="com/obia/safe/hibernate/hbm/Utilisateur.hbm.xml" />
            <mapping resource="com/obia/safe/hibernate/hbm/Role.hbm.xml" />
            <mapping resource="com/obia/safe/hibernate/hbm/Client.hbm.xml" />
            <mapping resource="com/obia/safe/hibernate/hbm/Ordretransport.hbm.xml" />
            <mapping resource="com/obia/safe/hibernate/hbm/Pays.hbm.xml" />
            <mapping resource="com/obia/safe/hibernate/hbm/Transporteur.hbm.xml" />
        </session-factory>
    </hibernate-configuration>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre actif
    Homme Profil pro
    Développeur Java/JavaEE
    Inscrit en
    Août 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java/JavaEE

    Informations forums :
    Inscription : Août 2014
    Messages : 194
    Points : 290
    Points
    290
    Par défaut
    Non pas d'hibernate non plus, que des requêtes natives. C'est un projet un peu à l'ancienne et c'est presque impossible d'implémenté un ORM (pour l'instant au moins) vu sa taille. Je galère depuis
    Je tiens a vous dire aussi que ce matin quand j'ai tester et que j'ai eu l'erreur j'ai tout de suite redémarrer le service de Mysql mais ça n'a pas marcher, j'ai redéployé l'application et La ça a marché !!
    ça pourrais venir je JBOSS 7 ça non ??

  13. #13
    Membre actif
    Homme Profil pro
    Développeur Java/JavaEE
    Inscrit en
    Août 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java/JavaEE

    Informations forums :
    Inscription : Août 2014
    Messages : 194
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Je pense que j'ai trouvé et c'est vraiment bizarre ce qui c'est passé: j'ai enlevé la connexion en singleton et je l'est remplacé avec une connexion simple et depuis j'ai accès à n'importe quel moment.

  14. #14
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    C'était une mauvaise idée de mettre la connexion en singleton car une connexion n'est pas prévue pour être utilisée par plusieurs utilisateurs en même temps. Tu devrais vraiment utiliser une datasource, soit de JBoss, soit c3p0 comme te le conseille OButterlin, soit une autre. Quelle que soit la datasource, tu peux l'utiliser même sans hibernate.

    Et non, le problème ne peut pas venir de JBoss, puisque tu n'utilises aucune fonctionnalité de JBoss pour cette connexion.

  15. #15
    Membre actif
    Homme Profil pro
    Développeur Java/JavaEE
    Inscrit en
    Août 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java/JavaEE

    Informations forums :
    Inscription : Août 2014
    Messages : 194
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Merci pour vos conseils .

    Et non, le problème ne peut pas venir de JBoss, puisque tu n'utilises aucune fonctionnalité de JBoss pour cette connexion.
    Oui le problème n'avait aucune relation avec JBOSS 7 (précisément avec son conteneur web puisque je n'utilise pas le conteneur EJB) , mais plutôt de la manière pour se connecter.

    Le problème est résolu pour moi mais reste inexplicable !!!

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

Discussions similaires

  1. connexion à 2 bases de données sous Jboss
    Par amonray dans le forum Wildfly/JBoss
    Réponses: 8
    Dernier message: 16/06/2008, 17h34
  2. [IB6.0]-Perte de connexion Client
    Par GroupeEL dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 21/03/2005, 15h43
  3. [JNDI] Problème en cas de perte de connexion
    Par Marc_P dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 19/10/2004, 14h45
  4. Perte de connexion BD
    Par Sylvain James dans le forum XMLRAD
    Réponses: 2
    Dernier message: 30/10/2003, 10h23
  5. Perte de connexion (bis)
    Par rgarnier dans le forum XMLRAD
    Réponses: 7
    Dernier message: 28/05/2003, 11h14

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