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 下运行它,您可能有机会在控制台上按“输入”,这将彻底关闭您的系统并导致数据库释放它的文件锁定。但是,如果您正在“杀死”您的环境(单击 Eclipse 中的红色停止按钮,或者可能是控制台中的 ctrl-c),HSQLDB 可能不会更改以释放它的基于文件的锁定。

如果您这样做是为了开发 - 您是否考虑过运行内存数据库?它使开发和自动化单元测试更快!

于 2009-07-18T07:47:25.427 回答