Spring的嵌入式H2数据源和DB_CLOSE_ON_EXIT

对于unit testing(如果需要,可以调用它们进行集成测试)我在Spring配置中配置了一个嵌入式数据库,如下所示:

   

现在,当从命令行运行测试时,它们工作正常,但最后我得到一些错误(无害,但令人恼火):

 WARN 2013-03-25 12:20:22,656 [Thread-9] osjdeH2EmbeddedDatabaseConfigurer 'Could not shutdown embedded database' org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-170] at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) ~[h2-1.3.170.jar:1.3.170] ... at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactoryBean.destroy(EmbeddedDatabaseFactoryBean.java:65) [spring-jdbc-3.2.1.RELEASE.jar:3.2.1.RELEASE] at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:238) [spring-beans-3.2.1.RELEASE.jar:3.2.1.RELEASE] 

现在,exception中包含的提示一般很好,但是如何将此属性添加到嵌入式数据源? 我是否必须扩展它,手动配置它可以说,添加这样的“高级”function?

在JDBC url jdbc中指定参数:h2:〜/ test; DB_CLOSE_ON_EXIT = FALSE

另外对于内存测试数据库,我建议你添加DB_CLOSE_DELAY=-1 ,如下所示:

 jdbc:h2:mem:alm;MODE=Oracle;DB_CLOSE_DELAY=-1 

要将JDBC连接URL添加到embedded-dababase更改为:

          

我和Michael Piefel的问题一样,并试图实施Michail Nikolaev解释的解决方案。 但我没有工作,不知何故弹簧批,然后,元数据JOB_ *表在哪里。 因此,由于我的应用程序使用的spring-jdbc版本是3.0.5并且增加了spring-framework ,因此与dwr冲突(我在我的应用程序中使用它),它是基于spring, dwrgmaps apigeo本地化。 我下载了spring-jdbc 4.0.3版本,并从中获取了默认情况下具有DB_CLOSE_ON_EXIT=FALSEH2EmbeddedDatabaseConfigurer.class ,并将其替换为spring-jdbc 3.0.5上的一个Relase并将其部署在war文件中并将其部署工作, VM的关闭没有激发内存数据库的关闭。

希望这个不寻常的解决方案有助于我的其他人无法实现其他解决方案。