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

Hibernate Java Discussion :

Test de bonne connectivité Hibernate


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 66
    Par défaut Test de bonne connectivité Hibernate
    Bonsoir,


    Je travaille avec Hibernate pour gérer une base de donnée sous Derby.
    J'aimerais qu'au lancement de mon programme l'accès à ma BDD soit vérifié et que si la base de donnée est inaccessible avertir l'utilisateur.


    Lorsqu'elle est inaccessible j'ai ce genre d'Exception :

    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
    java.sql.SQLNonTransientConnectionException: java.net.SocketException : lerreur lors de la connexion au serveur 152.40.0.12 sur le port 1527 a émis le message Software caused connection abort: connect.
    	at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
    	at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
    	at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source)
    	at java.sql.DriverManager.getConnection(DriverManager.java:582)
    	at java.sql.DriverManager.getConnection(DriverManager.java:154)
    	at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
    	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84)
    	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
    	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
    	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
    	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
    	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
    	at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
    	at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
    	at monApplication.DAO.getFactoryEntityManager(DAO.java:53)
    	at monApplication.DAO.<init>(DAO.java:42)
    	at monApplication.monApplicationApp.run(monApplicationApp.java:61)
    	at java.lang.Thread.run(Thread.java:662)
    Caused by: org.apache.derby.client.am.DisconnectException: java.net.SocketException : lerreur lors de la connexion au serveur 152.40.0.12 sur le port 1527 a émis le message Software caused connection abort: connect.
    	at org.apache.derby.client.net.NetAgent.<init>(Unknown Source)
    	at org.apache.derby.client.net.NetConnection.newAgent_(Unknown Source)
    	at org.apache.derby.client.am.Connection.<init>(Unknown Source)
    	at org.apache.derby.client.net.NetConnection.<init>(Unknown Source)
    	at org.apache.derby.client.net.NetConnection40.<init>(Unknown Source)
    	at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl40.newNetConnection(Unknown Source)
    	... 16 more
    Caused by: java.net.SocketException: Software caused connection abort: connect
    	at java.net.PlainSocketImpl.socketConnect(Native Method)
    	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    	at java.net.Socket.connect(Socket.java:529)
    	at java.net.Socket.connect(Socket.java:478)
    	at java.net.Socket.<init>(Socket.java:375)
    	at java.net.Socket.<init>(Socket.java:189)
    	at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:206)
    	at org.apache.derby.client.net.OpenSocketAction.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	... 22 more
    Qui provient de la création de mon EntityManagerFactory :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public final EntityManagerFactory getFactoryEntityManager() {
                if (emfServeur == null) {
                    emfServeur = Persistence.createEntityManagerFactory("MonApplicationPUServeur");
                }
                return emfServeur;}




    J'y ai jamais trop bien compris au fonctionnement des exceptions. Je peux les capturer dans mon application alors que l'exception est générée par du code écrit par Apache ?

    Ou bien je peux récupérer l'état de ma connexion qu'a créé Hibernate ?

    Et il a peut être une façon plus simple de tester la connexion ?

    Merci d'avance pour votre aide.

    Raphaël N.

  2. #2
    Membre émérite

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Par défaut
    Bonsoir,

    Tu peux effectivement catcher une exception "générée par du code écrit par Apache".

    Dans le fichier monApplicationApp.java, ligne 61, un try/catch sur java.sql.SQLNonTransientConnectionException peut être envisagé.

    Par contre, sans connaître l'architecture de ton application, je n'aurai pas une solution correcte à te proposer.

    Ce lien t'apportera plus de compréhension sur la gestion des exceptions : http://anisfrikha.developpez.com/tut...va/exceptions/

    Et pour tester la connexion à la base, tu peux exécuter une première requête SQL. Si elle réussit, la connexion est correcte. Sinon tu peux afficher un message pour informer l'utilisateur que la base n'est pas disponible.

    Il y a peut être plus propre et plus simple, les autres avis sont les bienvenus !

    Benoit

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

Discussions similaires

  1. Test sur GWT SPRING HIBERNATE
    Par bruno_nono dans le forum Test
    Réponses: 0
    Dernier message: 19/05/2011, 10h23
  2. spring test with jpa-mysql-hibernate.
    Par kossistus dans le forum Spring
    Réponses: 1
    Dernier message: 09/05/2008, 00h28
  3. [hibernate][test unitaire]j'arrive pas à inserer ce que je veux
    Par mehdi_swatch dans le forum Hibernate
    Réponses: 1
    Dernier message: 02/06/2006, 16h31
  4. SPRING+STRUTS+HIBERNATE. Une bonne solution ?
    Par ollivier dans le forum Struts 1
    Réponses: 9
    Dernier message: 10/04/2006, 13h16

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