J'utilise Apache Derby avec le Spring JdbcTemplate dans une application Web fonctionnant sur Tomcat.Spring se déconnectant de Derby
Spring gère la source de données. J'ai remarqué que si je mets à jour le fichier .war et Tomcat undeploys/redéploie l'application, je reçois cette erreur:
java.sql.SQLException: Another instance of Derby may have already booted the database /tmp/manager_db/manager.
Tomcat Relancer résout le problème, mais comme un puriste, je voudrais nettoyer les choses correctement lorsque la webapp est non déployée.
Le pilote Embedded ne semble pas avoir une méthode 'close' à mettre dans la déclaration du bean sous 'destroy-method'. Je sais que l'arrêt est normalement réalisé en utilisant une URL de connexion 'shutdown', "jdbc: derby:; shutdown = true".
Des suggestions?
Voici la déclaration dans le fichier de configuration de Spring pour ma source de données (le db ne sera pas sous/tmp /, juste là pour l'instant).
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.apache.derby.jdbc.EmbeddedDriver"/>
<property name="url" value="jdbc:derby:/tmp/manager_db/manager;create=true"/>
<property name="username" value=""/>
<property name="password" value=""/>
</bean>
Avez-vous compris cela, je reçois le même problème sous la jetée. –
Je l'ai modifié pour que Tomcat fasse la connexion. –