Невозможно повторно использовать HSQLDB в Jetty между перезапусками - PullRequest
1 голос
/ 08 июня 2009

Я использую плагин maven-jetty-для запуска приложения 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>

К сожалению, я не вижу возможности перезапустить веб-контекст, поскольку база данных остается заблокированной. Есть мысли о том, что я здесь делаю не так?

1 Ответ

0 голосов
/ 18 июля 2009

Вы разрешаете чистое отключение сервера? То есть как вы управляете своей средой разработки? Как ты его выключаешь?

Если вы работаете с Eclipse, вам может быть предоставлена ​​возможность нажать «enter» на консоли, что приведет к чистому завершению работы вашей системы и к тому, что db снимет блокировку файла. Однако, если вы «убиваете» свою среду (нажимая красную кнопку остановки в Eclipse или, возможно, ctrl-c в консоли), HSQLDB может не иметь изменений для снятия блокировки на основе файлов.

Если вы делаете все это для разработки - задумывались ли вы о запуске базы данных в памяти? Это делает разработку и автоматизированное модульное тестирование намного быстрее!

...