Лучший способ получить доступ к файлу базы данных sqlite в веб-сервисе - PullRequest
1 голос
/ 22 мая 2010

Первый вопрос от меня о переполнении стека.

Я создал веб-приложение Java, содержащее веб-сервис, использующий NetBeans (надеюсь, веб-приложение было правильным выбором). Я использую веб-приложение без дополнительных фреймворков. Этот веб-сервис использует драйвер JDBC sqlite для доступа к файлу базы данных sqlite.

Моя проблема заключается в том, что путь к файлу оказывается неверным, когда я пытаюсь сформировать строку соединения JDBC. Кроме того, рабочий каталог отличается при развертывании и при запуске тестов JUnit. Я где-то читал о включении файла в качестве ресурса, но примеров этого нигде не было видно.

В любом случае, как лучше всего открыть базу данных sqlite, как при развертывании веб-службы, так и при ее тестировании «локально»?

Я не знаю много о веб-сервисах, мне просто нужно, чтобы он работал, поэтому, пожалуйста, помогите мне с техническими деталями.

Обновление Чтобы поместить это немного в контекст, некоторый код "println" дает это:

Печать рабочего каталога из простого теста JUnit дает

C:\MinaFiler\Work\SOA\BusTimetableWS

Вызов аналогичного метода веб-службы возвращает

C:\Program Files\sges-v3\glassfish\domains\domain1

Строка подключения формируется из префикса «jdbc: sqlite:» к пути, который на данный момент является абсолютным:

C:\MinaFiler\Work\SOA\BusTimetableWS\src\java\miun\bustimetable\database\sqlit\BusTimetableWS.db

Однако это не удается, потому что мои тесты выдают исключения, утверждающие, что таблицы базы данных не существуют, хотя они действительно существуют, я могу увидеть их с помощью sqlite3.exe.

Ответы [ 2 ]

0 голосов
/ 23 мая 2010

В любом случае, как лучше всего открыть базу данных sqlite, как при развертывании веб-службы, так и при тестировании ее «локально»?

Веб-служба должна использовать DataSource для извлечения соединения из пула соединений, настроенного на уровне сервера приложений. В своем модульном тесте используйте все, что хотите (автономный пул соединений, прямое соединение JDBC).

Но в обоих случаях почему бы вам не использовать абсолютный путь к файлу базы данных в вашем URL-адресе jdbc? От Как указать файлы базы данных :

jdbc:sqlite:C:/work/mydatabase.db

Рабочий каталог не имеет значения, если вы это сделаете.

0 голосов
/ 22 мая 2010

Один из способов - использовать файл конфигурации, который вы можете прочитать и получить строку подключения оттуда.

Я уверен, что используемая вами среда имеет какой-то стандартный способ сохранения конфигураций.

Другой вариант - разместить БД в известном относительном пути из ваших основных исполняемых файлов. Затем при выполнении извлеките ваш текущий каталог и найдите БД по этому пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...