Перезагрузка файла свойств без перезапуска jboss

#java #jboss

#java #jboss

Вопрос:

Я хочу, чтобы изменения в файлах свойств вступали в силу без необходимости перезапуска сервера jboss.

Мой фрагмент кода выглядит следующим образом

 import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;

public class Myclass{
private static PropertiesConfiguration configure;
try {
        configure = new PropertiesConfiguration("MyProperties.properties");
        configure.setReloadingStrategy(new FileChangedReloadingStrategy());
        configure.setAutoSave(true);
    } catch (ConfigurationException e) {
        e.printStackTrace();
    }
  }
  

Но это не работает, пока я не перезапущу сервер.

Кто-нибудь, пожалуйста, может мне помочь?

Спасибо!!!

Комментарии:

1. Откуда эти классы, например PropertiesConfiguration ? Насколько я знаю, это не часть JDK…

2. У меня есть эти три инструкции импорта сверху

Ответ №1:

Скорее всего, этот файл находится внутри файла jar. Файлы свойств не сохраняют изменения внутри jar и, следовательно, не FileChangedReloadingStrategy будут запущены.

Попробуйте разместить файл вне jar.

Надеюсь, это поможет.

Комментарии:

1. Спасибо!! но файл находится не в jar .. скорее, он в jboss / jboss-4.2.3.GA config

Ответ №2:

Я попытался поиграть с упомянутым вами кодом и указать абсолютный путь к файлу свойств MyProperties.properties сработало

 configure = new PropertiesConfiguration("C:\MyProperties.properties");
  

Не уверен, является ли это ошибкой в библиотеке или это способ, которым ее следует использовать.

Ответ №3:

Нет. Это не будет работать, даже если ваш файл свойств находится вне jar. Ваш файл properites будет содержать код вашего класса, упакованный в работающий код, такой как файл .EAR, и развернутый в отдельном каталоге перед запуском JBOSS. Любые изменения в вашем исходном файле свойств больше не будут действовать, если вы не упакуете его снова и не развернете на сервере еще раз.