2

私は maven-jetty-plugin を使用して Spring アプリケーションを実行しています。最初に、データソースは Spring 内で宣言されました。外部の制約により、JNDI に移動しました。ローカル開発に使用する jetty-env.xml セクションは次のとおりです。

<New id="dataSource" class="org.mortbay.jetty.plus.naming.Resource">
    <Arg></Arg>
    <Arg>jdbc/DataSource</Arg>
    <Arg>
        <New class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <Set name="driverClass">org.hsqldb.jdbcDriver</Set>
            <Set name="jdbcUrl">jdbc:hsqldb:file:target/file.db;shutdown=true
            </Set>
            <Set name="user">sa</Set>
            <Set name="password"></Set>
            <Set name="initialPoolSize">3</Set>
            <Set name="maxPoolSize">5</Set>
            <Set name="numHelperThreads">2</Set>
            <Set name="breakAfterAcquireFailure">true</Set>
        </New>
    </Arg>
</New>

残念ながら、データベースがロックされたままなので、Web コンテキストを再起動できるようには見えません。私がここで間違っていることについて何か考えはありますか?

4

1 に答える 1

0

サーバーのクリーンシャットダウンを許可していますか?つまり、開発環境をどのように「実行」していますか?どのようにシャットダウンしますか?

Eclipseで実行している場合は、コンソールで「Enter」を押す機会が与えられる場合があります。これにより、システムが正常にシャットダウンされ、dbがファイルロックを解放します。ただし、環境を「強制終了」している場合(Eclipseの赤い停止ボタンをクリックするか、コンソールからctrl-cをクリックする場合)、HSQLDBにはファイルベースのロックを解放するための変更がない場合があります。

これをすべて開発のために行っている場合、インメモリデータベースの実行を検討しましたか?これにより、開発と自動化された単体テストがはるかに高速になります。

于 2009-07-18T07:47:25.427 に答える