让Java应用程序在运行时重新加载其配置文件

时间:2016-09-06 11:52:38

标签: java configuration-files uberjar

考虑一个Java独立的uberjar,它充当HTTP服务器并作为Linux服务运行。它的一些功能取决于外部配置文件,该文件可能会在一段时间内发生变化。

我尝试避免每次配置更改时重新启动应用程序。怎么能这样做呢?我立刻想到发送一个SIGHUP。这可以被java应用程序捕获吗?或者可能有另一种方法来实现这一目标?

2 个答案:

答案 0 :(得分:2)

假设配置文件可在本地文件系统上访问,并且该位置已知,为什么不使用Watch Service?

https://docs.oracle.com/javase/tutorial/essential/io/notification.html

答案 1 :(得分:0)

我会使用HTTP发送命令来重新加载配置文件。这将需要引入一个特殊的HTTP请求(例如,自定义标头X-Uberjar-Reload-Config,它将在与根URI一起使用时触发操作)。我会将该标头的值设置为配置文件的MD5或SHA1哈希值,以便仅在提交的哈希值与配置文件的哈希值匹配时才执行重新加载。