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 :
Qui provient de la création de mon EntityManagerFactory :
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
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.
Partager