Должны ли драйверы JDBC быть включены в WAR? - PullRequest
6 голосов
/ 22 сентября 2010

У нас в разработке находится коммерческий программный продукт.Он поддерживает серверные компоненты Oracle, MySQL и SQL * (мы также используем H2 для тестирования).Мы проводим интеграционное тестирование на базе этих разных баз данных, используя драйверы JDBC определенной версии.Maven прекрасно справляется со всем этим.

При упаковке приложения в виде WAR, можно ли добавить драйверы JDBC?Какова стандартная практика?

Поскольку мы не знаем, какую базу данных можно было бы использовать заранее, нам придется включить их все.Целевыми контейнерами сервлетов являются Tomcat и Jetty, но некоторые клиенты также захотят работать в WebSphere и JBoss.

Итак, сервлет содержит, а серверы приложений поставляются со своими собственными драйверами JDBC?Будет ли наш конфликт?Другая проблема заключается в том, что мы разработали и протестировали с одной версией драйвера, и если клиент использует другую версию, у нас могут быть проблемы.

В настоящее время мы используем компоненты источника данных Spring, но в процессе перехода кJNDI поиск источника данных.

Ответы [ 3 ]

8 голосов
/ 22 сентября 2010

Итак, сервлет содержит, а серверы приложений поставляются со своими собственными драйверами JDBC?

Некоторые это делают (например, WebLogic).

Будет ли конфликт между нами?

Они не должны.Не уверен, что ваш выбор будет выбран при создании автономного пула соединений на уровне приложения (все зависит от режима делегирования загрузчика классов).

Еще одна проблема заключается в том, что мы разработали и протестировали с одной версиейдрайвера и, если клиент использует другую версию, у нас могут возникнуть проблемы.

Есть список поддерживаемых версий.

В настоящее время мы используем компоненты источника данных Spring, нов процессе перехода к поиску JNDI для источника данных.

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

6 голосов
/ 22 сентября 2010

В большинстве приложений драйверы JDBC не поставляются как часть приложения.

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

Просто не добавляйте драйвер, и при необходимости попросите пользователя поместить соответствующий файл JAR в библиотеки сервера.

3 голосов
/ 23 сентября 2010

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

...