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.

Tags:

Java

Spring

H2