2013-03-25 28 views
25

(あなたがしたい場合は統合テストそれらを呼び出す)私はそうのような私の春のconfigに組み込みデータベースを設定している:Springの組み込みH2データソースとDB_CLOSE_ON_EXIT

<jdbc:embedded-database id="dataSource" type="H2"> 
    <jdbc:script location="classpath:schema_h2.sql" /> 
</jdbc:embedded-database> 

、コマンドからテストを実行するときライン、彼らが正常に動作しますが、私は最後に若干の誤差が出る(無害、しかし、刺激性):

WARN 2013-03-25 12:20:22,656 [Thread-9] o.s.j.d.e.H2EmbeddedDatabaseConfigurer '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] 

今例外に含まれているチップが一般的で結構ですが、どのように私は組み込みにこの属性を追加します情報元?私はそれを拡張し、話すように手動で設定しなければならないのですか?'advanced'機能を追加する必要がありますか?

答えて

49

私はあなたがこのように、DB_CLOSE_DELAY=-1を追加することをお勧めインメモリ・テスト・データベースに対してもJDBCのURLにjdbc:h2:~/test;DB_CLOSE_ON_EXIT=FALSE

をパラメータを指定します。

:に embedded-dababase変更にそれをJDBC接続URLを追加するには

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

<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> 
+0

これはH2のドキュメントで多く見つかりました。あなたは ''にそれをどのように追加するかを言わなかった。 –

+0

更新された回答を確認 –

+1

驚くばかりに、私はそんなことなしで何をしますか? – jeremyjjbrown

0

私はMichael Piefelの問題と同じ問題があり、Michail Nikolaev以前のソリューションを実装しようとしましたplained。 しかし、私はうまくいきませんでした。なぜなら、何とかスプリングバッチをしてから、メタデータのJOB_ *テーブルはどこにありますか? 私のアプリケーションで使用されているspring-jdbcのバージョンが3.0.5で、spring-frameworkの数字がdwr(私のアプリで使用しています)の値になると、は春に基づくローカライズdwrgmaps apiです。 私はspring-jdbc 4.0.3リリースをダウンロードし、それからを持っており、spring-jdbc 3.0.5のファイルに置き換えてください。​​のシャットダウンは、クローズドプロシージャではありませんでした。メモリ内のデータベースの

私のような他の人が他のソリューションを実装できない場合、この珍しい解決策が役立つことを願っています。

関連する問題