2016-09-06 70 views
0

考虑一个Java独立uberjar,它充当HTTP服务器并作为Linux服务运行。它的一些功能取决于外部配置文件,它可能会在一段时间内改变。使Java应用程序在运行时重新加载配置文件

我试图避免每次配置更改时重新启动应用程序。这怎么能正确完成?我立即想到发送一个SIGHUP。这可以通过Java应用程序捕获吗?或者也许有另一种方法来实现这一目标?

+2

你想要做的事情并不完全清楚......你可以用java监视文件中的变化(使用WatchService API,https://docs.oracle.com/javase/7/docs/api/java/nio /file/WatchService.html),但只会通知配置文件已更改的java代码。重新加载配置,关闭旧的HTTP端口并打开一个新的端口(例如),或者任何配置更改意味着,必须是应用程序代码的一部分,应该在运行时明确地开发用于处理配置更改的应用程序代码。 –

回答

0

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

相关问题