Spring’s embedded H2 datasource and DB_CLOSE_ON_EXIT Spring’s embedded H2 datasource and DB_CLOSE_ON_EXIT java java

Spring’s embedded H2 datasource and DB_CLOSE_ON_EXIT


Specify parameter in JDBC url jdbc:h2:~/test;DB_CLOSE_ON_EXIT=FALSE

Also for in-memory test database I suggest you to add DB_CLOSE_DELAY=-1, like this:

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

To add JDBC connection url to embedded-dababase change it to:

<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">    <property name="driverClass" value="org.h2.Driver"/>    <property name="url" value="jdbc:h2:mem:test;MODE=Oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE"/>    <property name="username" value="sa"/>    <property name="password" value=""/></bean><jdbc:initialize-database data-source="dataSource" ignore-failures="DROPS">    <jdbc:script location="classpath:schema_h2.sql" /> </jdbc:initialize-database>


I had the same issue as Michael Piefel's one and tried to implement the solution that Michail Nikolaev explained.but it did not work, somehow spring-batch, then, where are the metadata JOB_* tables are.So, as the version of spring-jdbc used by my application is 3.0.5 and increasing the spring-framework one enters in conflict with dwr (i use it in my app) it's a geo localization based on spring, dwr and gmaps api.I downloaded the spring-jdbc 4.0.3 release and get from it the H2EmbeddedDatabaseConfigurer.class who has DB_CLOSE_ON_EXIT=FALSE by default and replace with it the one on the spring-jdbc 3.0.5 Release and deploy-it in the war file and it works, the shutdown of the VM didn't provoke the closing of the in-memory database.

Hope this unusual solution helps if other people like me wouldn't be able to implement the other solution.


I had the same problem, but it was because I forgot to add the annotation @Entity on one of my entities. I add it and it work now !I hope this helps someone.