Каковы рекомендации передового опыта для конфигурации файла свойств Java EE 7?

Куда относится конфигурация приложения в современных приложениях Java EE? Какие рекомендации передовой практики есть у людей?

Под конфигурацией приложения я подразумеваю такие параметры, как параметры подключения к службам на других устройствах, включая внешние (например, Twitter и наши внутренние серверы Cassandra ... для таких вещей, как имена хостов, учетные данные, попытки повторных попыток), а также параметры, относящиеся к бизнес-логике (вещи что можно соблазниться хранить в классах как константы, например, дни для истечения срока действия и т. д.).

Предположения:

Мы развертываем на сервере Java EE 7 (Wildfly 8.1), используя один файл EAR, который содержит несколько войн и один ejb-jar.Мы будем развертывать в различных средах: модульное тестирование, локальные установки, облачная инфраструктура для UAT, стресс-тестирование и производственные среды.Многие из наших свойств будут варьироваться в зависимости от каждой из этих сред.Мы не против того, чтобы связывать конфигурацию свойств с инфраструктурой DI, если это рекомендуется людьми.Все это для новых разработок, поэтому нам не нужно соблюдать устаревшие требования или ограничения. Мы очень сосредоточены на текущих, современных лучших практиках.

Конфигурация принадлежит внутри или вне EAR?

Есливне EAR, где и как лучше всего получить к ним надежный доступ?

Есливнутри EAR мы можем хранить в любом месте в classpath, чтобы облегчить доступ во время выполнения. Но нам придется пересобирать (и, возможно, пересобирать) с каждым изменением конфигурации. А поскольку у нас будет несколько сред, нам потребуются средства для дифференциации файлов в EAR. Я вижу два варианта здесь:

Используйте ожидаемые имена файлов (например,cassandra.properties), а затем построить несколько EAR для конкретных сред (например,appxyz-PROD.ear).Построить один EAR (например.appxyz.ear) и поместите в него все наши различные файлы конфигурации среды, добавив переменную среды к каждому имени файла конфигурации (например,cassandra-PROD.properties). И, конечно, добавление переменной окружения (в виртуальную машину или иным способом), чтобы код знал, какой файл получить.

Какие лучшие практики люди могут порекомендовать для решения этой общей проблемы?

Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос