Я предполагаю, что для данного ресурса вы используете одно и то же имя JNDI в каждой среде. В противном случае вам придется отредактировать код, чтобы он указывал на имя нового ресурса (JNDI).
Настройка среды в первый раз может быть почти невозможна для тестирования заранее. Невозможно проверить, что какая-то строка, например строка соединения с производственной базой данных, не стала толстой, пока вам не понадобится ее использовать. Это природа конфигурации среды. С учетом вышесказанного, если вы хотите уменьшить вероятность появления ошибок, сначала необходимо убедиться, что каждому ресурсу присваивается имя, которое используется независимо от среды, в которой он размещен. Создайте имя ресурса dbConnectionString в файле свойств, которое указывает на jndi: / jdbc / myproject / resources / dbConnectionString, и убедитесь, что все среды объявляют этот же ресурс. Ниже показано, как мы держали код изолированным от этих типов экологических зависимостей. При этом вам всегда придется вручную проверять, что конфигурация конкретного сервера использует соответствующие значения для определенных ресурсов.
ПРИМЕЧАНИЕ: никогда создавать имена ресурсов, такие как " dbProdConnectionString ", " dbQAConnectionString ", " dbDevConnectionString ". Вы будете побеждать цель попытки устранить ручное вмешательство, потому что тогда вы добавили шаг косвенности, который потребует изменения кода (чтобы указать код на правильное имя ресурса), и сборку (чтобы упаковать изменения в ваш файл .war. ) при перемещении между средами.
Мы создали структуру папок для свойств, специфичных для среды. В этой папке мы создали папки для каждой конкретной среды, предназначенной для развертывания, включая локальную разработку. Выглядело это так:
Project
\
-Properties
\
-Local (your PC)
-Dev (shared dev server)
-Test (pre-production)
-Prod (Production)
В каждую папку мы помещаем параллельные копии файлов свойств / конфигурации и помещаем различные конфигурации только в файл в соответствующей папке. Секрет заключался в том, чтобы контролировать путь к классам среды развертывания. Мы определили запись пути к классу PROPERTIES на каждом сервере. В Prod для него будет задано значение «$ ProjectDir / Properties / Prod», а в «Тесте» для той же переменной будет установлено значение «$ ProjectDir / Properties / Test».
Таким образом, мы могли бы иметь предварительно настроенные строки соединения с базой данных для базы данных dev / test / prod, и нам не приходилось бы извлекать / в файле свойств каждый раз, когда мы хотели построить для другой среды.
Это также означало, что мы можем развернуть точно такой же файл .war / .ear в Test и Prod без перекомпоновки. Любые свойства, которые не были объявлены в файле свойств, мы обрабатывали аналогичным образом, используя одно и то же имя JNDI в каждой среде, но используя значения, характерные для этой среды.