Spring与Derby断开连接

时间:2010-07-05 17:12:57

标签: spring tomcat derby embedded-database

我在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>

1 个答案:

答案 0 :(得分:1)

我认为更好的答案是在Spring中使用Tomcat JNDI data source pool。 Spring的JDBC模板将在完成后返回到池的连接。