2016-09-06 246 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哈希值,以便僅當提交的哈希總和與配置文件相匹配時才執行重新加載。

相關問題