изменения в конфигурации без перераспределения - PullRequest
0 голосов
/ 18 февраля 2019

Мое веб-приложение имеет несколько интеграций с внешними системами, и все эти URL-адреса интеграции хранятся в файле конфигурации в веб-приложении.Мое приложение читает этот файл конфигурации при запуске и использует значения URL при установлении соединения с внешними системами.Но довольно часто случается, что одна из внешних систем не работает, и нам приходится использовать альтернативный URL.В этом случае нам, как правило, придется изменить конфигурацию и заново развернуть файл war.Есть ли способ изменить конфигурационный файл с новым значением без повторного развертывания файла войны?

1 Ответ

0 голосов
/ 18 февраля 2019

В моих проектах я обычно работаю с Конфигурацией Apache Commons для управления файлами конфигурации (свойствами).Эта библиотека имеет возможность автоматической перезагрузки значений при изменении файла.

Это очень полезное предложение для реализации:

Создайте класс "MyAppConfigProperties" для загрузки файла свойств и прочитайте ключи конфигурации:

public class MyAppConfig {

    //Apache Commons library object
    private PropertiesConfiguration configFile;

    private void init() {
        try {
            //Load the file            
            configFile = new PropertiesConfiguration(
                    MyAppConfig.class.getClassLoader().getResource("configFile.properties"));

            // Create refresh strategy with "FileChangedReloadingStrategy"
            FileChangedReloadingStrategy fileChangedReloadingStrategy = new FileChangedReloadingStrategy();
            fileChangedReloadingStrategy.setRefreshDelay(1000);
            configFile.setReloadingStrategy(fileChangedReloadingStrategy);

        } catch (ConfigurationException e) {
            //Manage the exception
        }
    }

    /**
     * Constructor por defecto.
     */
    public MyAppConfig() {
        super();
        init();
    }

    public String getKey(final String key) {

        try {
            if (configFile.containsKey(key)) {
                return configFile.getString(key);
            } else {
                return null;
            }

        } catch (ConversionException e) {
            //Manage Exception
        }
    }
}

Теперь вам нужно создать экземпляр этого класса (синглтон) и использовать его во всех местах, где вам нужно использовать ключ конфигурации.

Каждый раз, когда вы используете метод«getKey» вы получите последнее значение ключа без развертывания и перезапуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...