Как использовать H2 DB для нескольких экземпляров одного и того же приложения - PullRequest
0 голосов
/ 22 сентября 2018

У нас есть простое Java-приложение, разработанное с использованием среды Spring Batch, для загрузки данных, которые мы получаем в виде файлов, в базу данных.Мы использовали базу данных H2 для хранения статистики о том, сколько записей прочитано / загружено / не удалось.Мы получаем ситуации, когда нам необходимо загружать несколько файлов в разные таблицы одновременно, то есть запускать несколько экземпляров одного и того же файла Jar.Проблема в том, что база данных H2 не обеспечивает более одного подключения за раз, и она постоянно выдает исключение «Файл заблокирован» при запуске второго экземпляра.

Платформа: AIX

Версия Java: 1.8

Версия H2 DB: 1.4.193

H2 Конфигурация в application.properties

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:file:./h2/DataLoaderApp
spring.datasource.username=sa
spring.datasource.password=

Я пробовал разные решения, но, похоже, ничего не работает.

Попробуйте 1: Это не сработало

Попробуйте 2: добавлено FILE_LOCK = NO, оно по-прежнему выдает исключение File Locked, хотя я не вижу создаваемого файла * lock.db.

Пожалуйстапомогите мне, большое спасибо за ваше время.

1 Ответ

0 голосов
/ 22 сентября 2018

Ознакомьтесь с руководством по H2 для подключения в режиме сервера .
Измените URL-адрес своего соединения на jdbc:h2:tcp://localhost/~/DataLoaderApp, и перед установкой соединения должен быть запущен экземпляр H2db.Вы можете запустить автономный экземпляр H2 перед запуском приложения или запустить H2 в основном методе:

public static void main(String[] args) {
        Server.createTcpServer().start();
        SpringApplication.run(YourApplication.class, args);
    }
...