Как я могу предоставить относительный путь для файла базы данных H2, используя спящий режим под Tomcat? - PullRequest
4 голосов
/ 11 октября 2010

У меня есть довольно распространенная настройка: у меня есть H2 db с файлом db.Я использую БД в автономном режиме.Hibernate предоставляет доступ к БД, и я развернул свой код в Tomcat.

Проблема заключается в следующем: я не смог найти хороший способ просто поместить файл БД в war и указать относительный путь в спящем режимеКонфигурационный файл

На данный момент я должен использовать путь к c: // what_db_file_container_dir / dbname в конфигурации hibernate.

Это мешает мне развернуть веб-приложение с нулевой конфигурацией.Есть ли способ превратить эту установку в самодостаточный пакет с нулевой конфигурацией?

Ответы [ 2 ]

2 голосов
/ 16 октября 2010

В настоящее время H2 не поддерживает базы данных в classpath (есть запрос на функцию, но он еще не реализован). Но это будет работать только для баз данных только для чтения. К сожалению, H2 также не поддерживает системные свойства в URL базы данных.

Однако Hibernate поддерживает Программная конфигурация . Я не уверен, как получить каталог веб-приложения в Tomcat, но я знаю о catalina.home и catalina.base . Поэтому при запуске приложения получите значение системного свойства catalina.home и соответственно установите системное свойство Hibernate с URL-адресом базы данных. Я не пробовал себя, но так должно работать.

0 голосов
/ 06 ноября 2013

Если вы не хотите ждать реализованной функции, вы можете динамически установить URL-адрес H2 (или HSQL, derby) в своем коде. Проверьте http://www.jvmhost.com/spring-hosting для примера кода.

...