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.