配置更改而无需重新部署

时间:2019-02-18 04:05:02

标签: java spring web jboss

我的Web应用程序与外部系统进行了多次集成,所有这些集成的Rest URL都保存在Web应用程序中的配置文件中。我的应用程序在启动时会读取此配置文件,并在与外部系统建立连接时使用URL值。但是,经常会发生一个外部系统故障的情况,我们必须使用备用URL。在这种情况下,我们通常将不得不修改配置并重新部署war文件。有没有一种方法可以用新的值修改配置文件而无需重新部署war文件?

1 个答案:

答案 0 :(得分:1)

在我的项目中,我通常使用Apache Commons Configuration来管理配置文件(属性)。该库具有在文件更改时自动重新加载值的功能。

这是实施的建议:

创建一个“ 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”时,您将获得密钥的最后一个值,而无需部署并重新启动。