0

考虑一个 Java 独立 uberjar,它充当 HTTP 服务器并作为 Linux 服务运行。它的某些功能取决于外部配置文件,该文件可能会偶尔更改。

我尽量避免在每次配置更改时重新启动应用程序。这怎么能正确完成?我立即想到发送 SIGHUP。这会被java应用程序捕获吗?或者也许还有另一种方法可以实现这一目标?

4

2 回答 2

4

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

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

于 2016-09-06T12:05:15.480 回答
0

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

于 2016-09-06T12:14:05.103 回答