Лучший способ хранить параметры конфигурации базы данных? - PullRequest
1 голос
/ 14 апреля 2011

Я сейчас разрабатываю веб-приложение. Веб-приложение должно иметь доступ к базе данных Patients, которая на данный момент является простой базой данных MySQL, но, вероятно, в будущем может быть заменена некоторой другой БД (или источником данных). На данный момент все жестко закодировано, но я хотел бы иметь какой-либо способ настроить соединение с БД (то есть URL базы данных, пользователь, пароль и т. Д.).

Каким было бы простое и понятное решение? Было бы хорошо, если бы я мог изменить конфигурацию простым редактированием файла.

Я видел, что есть Свойства API, а также Предпочтения . Или есть какая-то идиома в отношении сервлетов / веб-приложений?

Ответы [ 2 ]

4 голосов
/ 14 апреля 2011

Сервлет является частью веб-приложения, и это веб-приложение развернуто в контейнере Java EE (Tomcat, WebLogic и т. Д.).

Стандартный способ установить соединение с базой данных - использовать JNDI для получения экземпляра DataSource и запросить соединение с этим DataSource. Источник данных в большинстве случаев будет объединять соединения с базой данных, чтобы избежать создания и закрытия слишком большого числа соединений, и, следовательно, будет намного быстрее:

Context initCtx = new InitialContext();
DataSource dataSource = (DataSource) initCtx.lookup("java:comp/env/jdbc/MyDataSource");
Connection c = dataSource.getConnection();
try {
    // ...
}
finally {
    c.close(); // makes the connection available for a new thread
}

Источник данных должен быть объявлен в файле web.xml:

<resource-ref>
    <description>Datasource example</description>
    <res-ref-name>jdbc/MyDataSource</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

Он должен быть определен (с его URL, количеством соединений, пользователем, паролем, настройками и т. Д.) Внутри контейнера Java EE. Вот где это зависит от вашего контейнера.

Прочитайте следующие объяснения для Tomcat: http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html

1 голос
/ 14 апреля 2011

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

В IIS это стандартный путь через файл Web.config.

привет

...