2016-09-06 1 views
0

HTTP 서 v로 작동하고 Linux 서비스로 실행되는 Java 독립형 uberjar를 고려하십시오. 그 기능 중 일부는 외부 설정 파일에 의존하며, 이는 한동안 변경 될 수 있습니다.실행 중 Java 응용 프로그램이 구성 파일을 다시로드하도록하십시오.

구성이 변경 될 때마다 앱을 다시 시작하지 마십시오. 이것이 어떻게 제대로 이루어질 수 있습니까? 나는 즉시 SIGHUP을 보내는 것을 생각했다. 이 자바 애플에 의해 잡힐 수 있을까? 아니면 이것을 달성하는 또 다른 방법이 있을까요?

+2

원하는 작업이 완전히 취소되지 않았습니다 ... Java 용 파일을 모니터 할 수 있습니다 (WatchService API, https://docs.oracle.com/javase/7/docs/api/java/nio). /file/WatchService.html), Java 코드는 구성 파일이 변경되었음을 통지합니다. 구성을 다시로드하고, 이전 HTTP 포트를 닫고 (예를 들어) 새 구성 요소를 열거 나, 구성 변경이 의미하는 바는 애플리케이션 코드의 일부 여야하며, 런타임시 구성 변경 사항을 처리하기 위해 명시 적으로 개발되어야합니다. –

답변

0

나는 설정 파일을 다시로드하는 명령을 전송하기 위해 HTTP를 사용합니다. 이렇게하려면 특수 HTTP 요청 (예 : 루트 URI와 함께 사용할 때 작업을 트리거하는 사용자 지정 헤더 X-Uberjar-Reload-Config)을 도입해야합니다. 제출 된 해시 합이 설정 파일의 해시 합과 일치하는 경우에만 재로드가 수행되도록 구성 파일의 MD5 또는 SHA1 해시로 헤더의 값을 설정합니다.

관련 문제