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:
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:
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.