Мы смотрим на то, как реализовать распределенную конфигурацию в рамках нашего, прежде всего, основанного на Java развертывания. У нас есть много приложений, и имеет смысл централизовать конфигурацию приложений. JNDI, кажется, стандартный выбор, вероятно, отступая к чему-то как ApacheDS (тот способ, которым мы можем сохранить не конфигурацию Java там также). Вот некоторые вещи, которые я рассмотрел. Кто-либо попробовал что-то подобное? Какие-либо рекомендации?:
Это было бы для нескольких приложений на нескольких машинах, некоторые приложения будут кластеризироваться. Сервер каталогов должен также идеально кластеризироваться.
JNDI имеет что-то вроде чувства J2EE к нему. Любой использует распределенный механизм конфигурации альтернативы. Сами приложения имеют тенденцию быть относительно легкими а не полными JAVA EE-приложениями (хорошо спорный, является ли Java, EE все еще считают тяжеловесом и требованиями, конечно, тяжеловесом).
Часто та же конфигурация относится к нескольким приложениям (например, несколько приложений могут соединиться с той же базой данных). Один другая рука, некоторым приложениям, возможно, понадобится определенная конфигурация. Иногда трудно знать заранее, будет ли приложение использовать 'глобальную' конфигурацию или что-то определенное, таким образом, способность сначала искать приложение / разместит определенную конфигурацию, и затем отступание было бы хорошо. Я думаю о структуре что-то вроде этого:
/global/host/application/instance или/global/application/host/instance:
таким образом запустите путем проверки, чтобы видеть, существует ли какая-либо конфигурация, характерная для этого экземпляра приложения на этом хосте, то проверьте, существует ли любая конфигурация, характерная для этого приложения для этого хоста, то проверьте, чтобы видеть, существует ли что-либо специфичное для этого приложения, то попробуйте глобальную установку. Есть ли какие-либо лучшие практики для такого рода вещи?
Spring позволяет конфигурацию с jee:jndi-поиском, и можно принять решение не кэшировать значение, что означает, что это ищется каждый запрос. Я не уверен, что это имеет смысл для "Строковых" значений конфигурации типа. Это также, кажется, не использует NamingListener способ обнаружить изменения в DS. Было бы хорошо смочь обновить значение на Сервере каталогов и иметь ту широковещательную передачу изменения ко всем приложениям, которые используют его.
Рассматривали ли вы возможность использования базы данных для хранения конфигурации приложения? В Apache Commons есть класс DatabaseConfiguration, который представляет вашу таблицу как экземпляр java.util.Properties (см. http: //commons.apache .org / configuration / apidocs / org / apache / commons / configuration / DatabaseConfiguration.html ).