HSQLDBファイルモード。
主にサンプル用DBとしてHSQLDBをfileモードで使う時、
接続URLの末尾に;shutdown=trueと付けると、
Connectionをcloseする度に、ローカルファイルのロックを解除するので
謎のエラーに悩まされずに済むですよ。
<component name="xaDataSource" class="org.seasar.extension.dbcp.impl.XADataSourceImpl"> <property name="driverClassName"> "org.hsqldb.jdbcDriver" </property> <property name="URL"> "jdbc:hsqldb:file:" + @org.seasar.framework.util.ResourceUtil@getBuildDir("data").getCanonicalPath() + "/data/demo;shutdown=true" </property> <property name="user">"sa"</property> <property name="password">""</property> </component>
こんなスタックトレースが出る時は、
上の設定を使うと良い感じで解消する様になります。
java.sql.SQLException: The database is already in use by another process: org.hsqldb.persist.NIOLockFile@15991d5[file =D:\development\java\runtime-EclipseApplication\aaaa\target\test-classes\data\demo.lck, exists=true, locked=false, valid=false, fl =null]: java.lang.Exception: プロセスはファイルにアクセスできません。別のプロセスがファイルの一部をロックしています。 : D:\development\java\runtime-EclipseApplication\aaaa\target\test-classes\data\demo.lck at org.hsqldb.jdbc.Util.sqlException(Unknown Source) at org.hsqldb.jdbc.jdbcConnection.<init>(Unknown Source) at org.hsqldb.jdbcDriver.getConnection(Unknown Source)