Мы строим трехуровневые корпоративные решения, которые обычно состоят из нескольких модулей webapp и ejbjar, которые все общаются с db и имеют несколько точек внешней интеграции.
Каждый модуль обычно нуждается в собственных конфигурациях, которые могут меняться в течение срока службы решения. Развертывание это становится кошмаром, потому что теперь у нас есть 18 файлов свойств, которые необходимо помнить, чтобы скопировать и настроить также настройку источников данных, очередей, требований к памяти и т.д.
Я надеюсь, но не оптимистично, что может быть лучший способ. Некоторые варианты, которые мы рассмотрели/использовали, каждый с плюсами и минусами:
- Используйте несколько проектов maven и непрерывную интеграцию (например, hudson или jenkins) для создания контейнера конфигурации, который включает все файлы свойств для каждой среды (dev, qa, prod), а затем объединяет все как EAR. Но тогда вещи не могут быть легко изменены при производстве, когда это необходимо.
- Поместите большинство настроек в БД и попробуйте простой экран, чтобы изменить его. Внутри мы можем иметь общий сервис EJB, который может читать и изменять значения. Каждый модуль может иметь специальную расширенную версию, которая имеет определенные геттеры и сеттер.
- Версия управляет всеми файлами свойств, затем проверяет их на производстве и проверяет их в производственной ветке после внесения изменений.
При всем этом вам все равно необходимо сконфигурировать источники данных и очереди и т.д. контейнером: (