Ответ 1
Пример, найденный в одном из моих кодов:
System.setProperty("javax.net.ssl.trustStore", keystore_file);
Вы можете запустить его в ответ на запрос "перенастроить" (добавить reconfigure()
к вашему серверному коду).
Вопрос: Есть ли способ "подключиться" к запущенной JVM и изменить системные свойства (заданные -Dproperty = значение), не останавливая JVM и не запрограммировав способ сделать это?
Теперь контекст: У меня есть сервер JBoss, работающий на удаленной машине, на которой размещается мое приложение, а также другие приложения. Эти другие приложения не могут быть остановлены. Сервер вызывается с определенным свойством -D, которое имеет отношение только к моему приложению. Это свойство было присвоено неверное значение при запуске сервера. Мне нужно изменить это свойство. Самый простой способ - перезапустить JBoss, но это заставило бы все приложения спуститься на некоторое время. Есть ли способ изменить это свойство без остановки каких-либо приложений, кроме моего?
Спасибо!
Пример, найденный в одном из моих кодов:
System.setProperty("javax.net.ssl.trustStore", keystore_file);
Вы можете запустить его в ответ на запрос "перенастроить" (добавить reconfigure()
к вашему серверному коду).
Многие свойства системы проверяются только при запуске, поэтому их изменение не всегда помогает.
Я предлагаю вам добавить поддержку в ваше приложение для выполнения изменения с помощью запроса, чтобы ваше приложение узнало, что оно произошло, и обработайте его соответствующим образом.
Как уже указывали другие, вероятно, не может изменить значение системного свойства, используемое вашим приложением. Одним из вариантов может быть перезапуск приложения. Похоже, что Jboss предлагает возможность запуска/запуска JMX для веб-приложений, которые вы можете прочитать здесь, хотя я на самом деле не пробовал это.
Не долгосрочное решение, но вы можете подключить отладчик и "сменять" код, который возвращает значение свойства, которое вы хотите, вместо поиска свойства. Это требует, чтобы вы включили удаленную отладку при запуске JBoss.
вы можете сделать это, используя метод System.setProperty(). например: System.setProperty(ключ, значение);