Постоянная конфигурация базы данных WAR? - PullRequest
1 голос
/ 01 марта 2020

Я разрабатываю Spring Boot (с интерфейсом Hibernate и React), который развертывается как файл с одним WAR-файлом. Во время первого использования администратор будет использовать веб-интерфейс для настройки внутреннего подключения к базе данных и настройки пользователя-администратора.

Поскольку я не смогу сохранить это в базе данных, я хочу сохранить это в файл. Будет ли использование базы данных Hibernate H2 для записи этого файла в файл для чтения при запуске законным путем к go?

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

Но хотел проверить, является ли это разумным подходом для продажи производственного приложения клиентов. Единственное, что в нем будет храниться, - это две таблицы с несколькими строками данных.

1 Ответ

0 голосов
/ 03 марта 2020

Java Интерфейс именования и каталогов (JNDI)

Вы не должны быть жестко запрограммированными подробностями конфигурации среды выполнения в базе кода вашего веб-приложения. Вместо этого извлеките эту информацию. Поэтому, когда пароль базы данных меняется, вам не нужно повторно компилировать веб-приложение. Например, когда ваш системный администратор изменится с Tomcat на Payara в качестве вашего веб-контейнера, вам не нужно повторно компилировать ваше веб-приложение.

Вывод этой информации в обычном порядке в корпоративные приложения. Часто эта информация о конфигурации помещается в службу каталогов , такую ​​как LDAP .

Некоторые веб-контейнеры поставляются со встроенной службой каталогов. в. Узнайте подробнее о вашем конкретном контейнере и его функциях.

Java предоставляет API в качестве посредника между вашим кодом и всеми различными технологиями службы каталогов: Java Именование и каталог Интерфейс (JNDI) . Во время развертывания системный администратор настраивает выбранную вами службу каталогов и размещает некоторые файлы конфигурации для вашего веб-контейнера.

Код Java вашего веб-приложения использует JNDI для слепого запроса необходимой услуги или объекта. Ваше веб-приложение не знает или не заботится, является ли веб-контейнер Apache Tomcat использующим его собственная встроенная служба каталогов , или если ваш системный администратор использует отдельный сервер LDAP для хранения подробности развертывания.

Например, для подключения к базе данных ваш код Java будет использовать JNDI API для запроса объекта DataSource из службы имен / каталогов. Этот объект содержит необходимый адрес базы данных, имя пользователя, пароль и различные параметры базы данных. Ваш код Java просто вызывает DataSource::getConnection для любого возвращаемого объекта реализации DataSource. Это изолирует ваш код Java от деталей конфигурации базы данных. sysadmin и DBA могут свободно перемещать или перенастраивать сервер базы данных, не прерывая работу вашего веб-приложения.

...