我在Tomcat上运行的Web应用程序中使用Apache Derby和Spring JdbcTemplate。
Spring正在管理数据源。我注意到,如果我更新.war文件并且Tomcat取消部署/重新部署应用程序,我会收到此错误:
java.sql.SQLException: Another instance of Derby may have already booted the database /tmp/manager_db/manager.
重新启动Tomcat可以解决问题,但作为一个纯粹主义者,我想在取消部署webapp时正确地清理它。
嵌入式驱动程序似乎没有'close'方法放入'destroy-method'下的bean声明中。我知道通常使用'shutdown'连接URL来实现关闭,“jdbc:derby :; shutdown = true”。
有什么建议吗?
这是我的数据源的Spring配置文件中的声明(db不会在/ tmp /下,现在就在那里)。
<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>