#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. Любые изменения в вашем исходном файле свойств больше не будут действовать, если вы не упакуете его снова и не развернете на сервере еще раз.