Question

J'utilise Apache Derby avec le printemps JdbcTemplate dans une application Web en cours d'exécution sur Tomcat.

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 résout le redémarrage problème, mais comme un puriste, je voudrais nettoyer les choses correctement lorsque le webapp est non déployé.

Le pilote embarqué ne semble pas avoir une méthode « proche » de mettre dans la déclaration de haricot sous la rubrique « détruire méthode ». Je sais que l'arrêt est normalement réalisé en utilisant une URL de connexion 'arrêt', "jdbc: derby:; arrêt = true"

.

Toutes les suggestions?

Voici la déclaration dans le fichier de configuration Spring pour ma source de données (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>
Était-ce utile?

La solution

Je pense qu'une meilleure réponse est d'utiliser le pool source de données Tomcat JNDI avec le printemps. Le modèle JDBC de Spring retournera la connexion à la piscine quand il est fait.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top