Bonjour,
Je travaille avec JPA en m'appuyant sur une base Derby en mode Embedded, ce qui signifie une seule et unique JVM utilisatrice à la fois.
Si je lance une seconde JVM et que je veux accéder à ma BDD cela me sort cette 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 java.sql.SQLException: Echec du démarrage de la base de données 'directory:M:\donnees\MA_BDD' ; pour plus de détails, voir l'exception suivante. at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source) at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source) at org.apache.derby.impl.jdbc.Util.seeNextException(Unknown Source) at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown Source) at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source) at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown Source) at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown Source) at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source) at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source) at org.apache.derby.jdbc.AutoloadedDriver.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(Persistence.java:51) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33) at plansdesurveillance.controle.Controle.getFactoryEntityManager(Controle.java:43) at plansdesurveillance.controle.Controle.<init>(Controle.java:36) at plansdesurveillance.PlansdeSurveillanceApp.run(PlansdeSurveillanceApp.java:61) at java.lang.Thread.run(Thread.java:662) Caused by: java.sql.SQLException: Echec du démarrage de la base de données 'directory:M:\donnees\MA_BDD' ; pour plus de détails, voir l'exception suivante. at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source) ... 25 more Caused by: java.sql.SQLException: Il est possible qu'une autre instance de Derby ait déjà amorcé la base de données directory:M:\donnees\MA_BDD. at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source) at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source) at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source) ... 22 more
Ce que je cherche serai de réussir à capturer l'exception dans mon projet afin d'ouvrir une fenêtre pour prévenir l'utilisateur que la base est déjà en cours d'utilisation.
Sauf que j'ai beau essayer de mettre un bloc try/catch tout autour de ma fabrique d'entity manager (qui quelque part dans son code doit appeler de manière autonome la fonction getConnection) sans réussir à capturer quoique ce soit.
Si vous avez des pistes merci d'avance.
Raphaël N.
Partager