2016-09-06 9 views
0

HTTPサーバーとして機能し、Linuxサービスとして実行されるJavaスタンドアロンのuberjarを検討してください。その機能のいくつかは外部設定ファイルに依存しますが、その設定ファイルは一度変更される可能性があります。実行中にJavaアプリケーションが設定ファイルをリロードするようにする

私は、設定が変更されるたびにアプリケーションを再起動しないようにしています。どのようにこれは適切に行うことができますか?私はすぐにSIGHUPを送ることを考えました。これはJavaアプリケーションによって捕らえられますか?あるいは、これを達成する別の方法がありますか?

+2

実行したいことが完全にはっきりしていない... Javaのファイルを監視することができます(WatchService API、https://docs.oracle.com/javase/7/docs/api/java/nioを参照)。 /file/WatchService.html)、Javaコードには構成ファイルが変更されたことだけが通知されます。設定をリロードしたり、古いHTTPポートを閉じたり、新しいHTTPポートを開くなど、変更が何を意味していても、アプリケーションコードの一部でなければなりません。実行時に構成変更を処理するために明示的に開発する必要があります。 –

答えて

0

私は、configファイルをリロードするコマンドを送信するためにHTTPを使用します。これには特別なHTTP要求(例えば、ルートURIと共に使用されるときに操作をトリガーするカスタムヘッダX-Uberjar-Reload-Config)を導入する必要があります。送信されたハッシュ値が設定ファイルのハッシュ値と一致する場合にのみ、再ロードが実行されるように、そのヘッダーの値を設定ファイルのMD5またはSHA1ハッシュに設定します。

関連する問題