Перезагрузка переменных среды выполнения - PullRequest
0 голосов
/ 17 июня 2020

Можно ли прослушивать событие изменения в переменной среды из приложения java? Мне интересно узнать, как на самом деле определить, что базовая переменная среды изменилась во время выполнения, и действовать в соответствии с ней? В приведенном ниже коде я хотел бы, чтобы приложение получало уведомление об изменении env.var в среде. Мы используем Java 8 на платформе PCF.

@Value("${env.var}")
private String envVar;

1 Ответ

5 голосов
/ 17 июня 2020

В зависимости от платформы вашей ОС это невозможно; каждый процесс получает копию переменных среды, на самом деле нет такой вещи, как «глобальная» таблица среды - переменные среды процесса, который отвечает за запуск большинства процессов, кажутся глобальными-i sh, возможно, поскольку вы наследуете переменные среды от процесса, запустившего ваш процесс (если только во время запуска вашего процесса не были внесены изменения в переменные среды), то вы фактически просите: «Могу ли я наблюдать какие-либо изменения в переменных среды, как в процесс, который породил меня », который, среди прочего, довольно опасен с точки зрения безопасности, что приводит к довольно очевидному ответу: нет, вы не можете этого сделать.

Может быть, сделаем шаг назад и опишите актуальную проблему, которую вы пытаетесь решить. Возможно, вам нужна возможность настраивать свое приложение в реальном времени, и вы выбрали «этот параметр будет передан в приложение с помощью системы переменных среды моей ОС» - что является одним из многих способов достижения sh цели: система настройки. Это способ, который не очень хорошо подходит для живых обновлений.

Если вы вместо этого передаете настройки через файл, ну, что ж, гораздо проще следить за файлом и запускать повторное чтение при изменении, например.

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