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

JPA Java Discussion :

Récupérer les erreurs de connexion


Sujet :

JPA Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Récupérer les erreurs de connexion
    Bonjour à tous,

    J'ai un simple bout de code pour initialiser ma connexion JPA (vers MySQL en l'occurrence) histoire de voir si tout se passe bien, et j'aimerai que mon programme soit capable de savoir quand y'a un problème, histoire de l'indiquer aux utilisateurs.
    Mon bout de code est archi-simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    try {
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyPU");
    } catch(Throwable t) {
    System.out.println("oups");
    }
    J'ai volontairement fait une boulette dans ma chaîne de connexion à la BD pour tenter de récupérer l'erreur mais rien: JPA log tout dans la console sans passer par le catch.

    (L'erreur de départ est remontée par le driver MySQL en toute logique)

    J'ai fait pas mal de recherche et je n'ai rien trouvé .
    Est-ce un fonctionnement standard ? est-ce une mauvaise config ?
    Est-ce que l'utilisation des Exception Spring changerait ça ?

    (pour info j'utilise Hibernate comme couche JPA)

    merci pour vos lumières

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par guiom Voir le message
    Bonjour à tous,

    J'ai un simple bout de code pour initialiser ma connexion JPA (vers MySQL en l'occurrence) histoire de voir si tout se passe bien, et j'aimerai que mon programme soit capable de savoir quand y'a un problème, histoire de l'indiquer aux utilisateurs.
    Mon bout de code est archi-simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    try {
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyPU");
    } catch(Throwable t) {
    System.out.println("oups");
    }
    J'ai volontairement fait une boulette dans ma chaîne de connexion à la BD pour tenter de récupérer l'erreur mais rien: JPA log tout dans la console sans passer par le catch.

    (L'erreur de départ est remontée par le driver MySQL en toute logique)

    J'ai fait pas mal de recherche et je n'ai rien trouvé .
    Est-ce un fonctionnement standard ? est-ce une mauvaise config ?
    Est-ce que l'utilisation des Exception Spring changerait ça ?

    (pour info j'utilise Hibernate comme couche JPA)

    merci pour vos lumières
    try/catch intercepte les exceptions du thread…
    et la connection est tentée par un autre thread…

    si vous ajoutez un
    System.out.println("UN_MESSAGE_FACILE_A_RETROUVER_DANS_LE_LOG") ;
    après le try/catch je parie que le message va se mélanger avec le log de l'échec de connection…

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Pas du tout: il apparaît à la fin (plusieurs essais)

    La piste du thread serait une bonne explication (bien que ça me semble bizarre que la connection soit faite dans un autre thread), mais ça ne semble pas être le cas.

    Autre info que j'ai oublié de donner : je ne suis pas en environnement Web: ce n'est pas une servlet configurée dans le web.xml qui lance ce bout de code, c'est un simple main(..).

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par guiom Voir le message
    Pas du tout: il apparaît à la fin (plusieurs essais)

    La piste du thread serait une bonne explication (bien que ça me semble bizarre que la connection soit faite dans un autre thread), mais ça ne semble pas être le cas.

    Autre info que j'ai oublié de donner : je ne suis pas en environnement Web: ce n'est pas une servlet configurée dans le web.xml qui lance ce bout de code, c'est un simple main(..).
    avec catch(Exception e) cela "fonctionne" ici :

    org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Cannot open connection

    lors d'un test avec mot de passe erroné… (dans un tool : un simple main() aussi…)

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Je vois que c'est une erreur Spring que tu remontes. Je n'ai pas Spring dans mon cas.
    Peux-tu faire un essai sans ? (juste un persistence.xml)

    Je vais faire un essai avec de mon côté avec Spring.

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Bon ben c'est pas mieux avec Spring de mon côté

    voici mon code dans le try/catch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try {
    XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
    GenericBeanFactoryAccessor gbfa = new GenericBeanFactoryAccessor(beanFactory);
    EntityManagerFactory emf = gbfa.getBean("entityManagerFactory");
    JpaTransactionManager transactionManager = gbfa.getBean("transactionManager");
    } catch(Throwable t) {
    System.out.println("oups");
    }
    et mon spring-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    	</bean>
    	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    		<property name="entityManagerFactory" ref="entityManagerFactory" />
    	</bean>
    J'ai essayé de créer le entityManagerFactory et le transactionManager. Dans les 2 cas il ne passe jamais dans mon catch(Throwable) ...

    Tu peux me donner ta config Spring ? merci

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par guiom Voir le message
    Bon ben c'est pas mieux avec Spring de mon côté

    voici mon code dans le try/catch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try {
    XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
    GenericBeanFactoryAccessor gbfa = new GenericBeanFactoryAccessor(beanFactory);
    EntityManagerFactory emf = gbfa.getBean("entityManagerFactory");
    JpaTransactionManager transactionManager = gbfa.getBean("transactionManager");
    } catch(Throwable t) {
    System.out.println("oups");
    }
    et mon spring-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    	</bean>
    	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    		<property name="entityManagerFactory" ref="entityManagerFactory" />
    	</bean>
    J'ai essayé de créer le entityManagerFactory et le transactionManager. Dans les 2 cas il ne passe jamais dans mon catch(Throwable) ...

    Tu peux me donner ta config Spring ? merci
    J'utilise ClassPathXmlApplicationContext via un objet (bean) dont les attributs sont initialisés via des @Resource…

    le try/catch est autour de l'initialisation de cet objet…

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    J'avoue que ceci
    J'utilise ClassPathXmlApplicationContext via un objet (bean) dont les attributs sont initialisés via des @Resource…
    ne m'aide pas tellement. J'ai fait un essai avec ClassPathXmlApplicationContext (simple remplacement de mon initialisation Spring par ClassPathXmlApplicationContext) et j'ai obtenu le même résultat que précédemment.
    Quant au @Resource j'avoue ne pas savoir m'en servir et quelques lectures de doc ne m'ont pas éclairé.

    Peux-tu me donner un peu plus de code ?

    As-tu essayé le mien ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/12/2008, 09h57
  2. [2.2.2] Détecter et récupérer les erreurs oracle
    Par alexandre_71 dans le forum BIRT
    Réponses: 1
    Dernier message: 10/10/2008, 14h53
  3. [Security] Récupérer les erreurs Acegi
    Par Asterius dans le forum Spring
    Réponses: 4
    Dernier message: 27/03/2008, 09h35
  4. [Sécurité] [PEAR::Auth] Gérer les erreurs de connexion
    Par lamimolette75 dans le forum Langage
    Réponses: 1
    Dernier message: 18/09/2006, 18h47
  5. récupérer les erreurs php dans des exceptions
    Par jeanvincent dans le forum Langage
    Réponses: 6
    Dernier message: 14/10/2005, 16h26

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