Отключение пружины от дерби - PullRequest
2 голосов
/ 05 июля 2010

Я использую Apache Derby с Spring JdbcTemplate внутри веб-приложения, работающего на Tomcat.

Spring управляет источником данных.Я заметил, что если я обновляю .war-файл и Tomcat отменяет / повторно развертывает приложение, я получаю эту ошибку:

java.sql.SQLException: Another instance of Derby may have already booted the database /tmp/manager_db/manager.

Перезапуск Tomcat устраняет проблему, но как пурист, я бы хотелОчистите вещи должным образом, когда веб-приложение не развернуто.

Кажется, что встроенный драйвер не имеет метода 'close', который можно было бы поместить в объявление bean-компонента в 'destroy-method'.Я знаю, что завершение работы обычно выполняется с помощью URL-адреса соединения «shutdown», «jdbc: derby:; shutdown = true».

Есть предложения?

Вот объявление в файле конфигурации Spring длямой источник данных (база данных не будет находиться в / tmp /, только сейчас).

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.apache.derby.jdbc.EmbeddedDriver"/>
    <property name="url" value="jdbc:derby:/tmp/manager_db/manager;create=true"/>
    <property name="username" value=""/>
    <property name="password" value=""/>
</bean>

1 Ответ

1 голос
/ 05 июля 2010

Я думаю, что лучшим решением будет использование пула JNDI-данных Tomcat с Spring.Шаблон Spring JDBC вернет соединение с пулом, когда это будет сделано.

...