как обновить application.conf во время выполнения - PullRequest
0 голосов
/ 28 сентября 2018

Я обновляю значение ключа в application.conf, устанавливая переменную среды

play.http.secret.key=${?MY_SECRET_KEY}

Но оно все равно загружает предыдущее значение.
После перезагрузки системы изменение вступает в силу.
ЕстьЕсть ли способ обновить файл конфигурации без перезагрузки?

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Попробуйте следующее:

В файле с именем sample1.conf :

a {
   b {
      c = 30
      d = ["Red", "Orange", "Green", "Blue"]
   }
}

Если вы хотите изменить свойство, обязательно измените его какСистемное свойство сначала и вызовите недействительные кэши, затем загрузите снова.Это также то, что позволяет вам переопределить в командной строке.

System.setProperty("a.b.c", "100")
ConfigFactory.invalidateCaches()
val config = ConfigFactory.load("sample1")
config.getDouble("a.b.c") should be (100.0)

Не знаю, будет ли это работать во всех сценариях.Так что это может или не может работать с вашим приложением выбора.

0 голосов
/ 28 сентября 2018

AFAIK, нет механизма "из коробки", чтобы сделать такую ​​вещь.Как выясняется, когда вы запускаете Play с помощью команды «sbt run», он запускается в режиме Dev, создавая два ClassLoaders, один для вашего кода, а другой для неизменяемого кода, такого как библиотеки, зависимости и код инфраструктуры.сам.Это делается таким образом, чтобы обеспечить функцию горячего развертывания, убивая и перезагружая первый CL.Так как application.conf загружается Play при запуске, я думаю, что он загружается в фиксированном ClassLoader, поэтому перезагрузка невозможна.

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