Capture d'exception Derby : java.sql.SQLException
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:
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.