서블릿 애플리케이션에 정상적인 종료 메커니즘을 구현해야합니다.긴 종료 동안 서블릿 요청을 처리하는 방법
편집 : 우리는 운영 체제의 기능을 통해 전송 킬 (kill) 신호를 처리 할 것이다, 가능한 한 간단하게하고 싶다. 이렇게하면 시스템 관리자가 쉘 유틸리티 (Windows에서는 kill 또는 taskkill)를 사용할 수 있습니다. 그렇지 않으면 서버와 "대화"하기 위해 다른 유틸리티를 설치해야합니다.
이 메커니즘은 두 단계로 작동합니다
종료 요청에 따라- , 거부 중요한 특정 활동
- 블록 이전에 시작 중요한 작업이 완료 될 때까지; 이들은 몇 시간 단계 # 1 우리 DAO 층에서 구현
걸릴 수 있습니다. 2 단계가 ServletContextListener # contextDestroyed 메소드에 구현되었습니다.
일단 contextDestroyed가 호출되면 서블릿 컨테이너는 더 많은 HTTP 요청을 처리하지 못합니다.
편집 : 누군가가 서버의 프로세스에 대한 운영 체제의 살인 함수를 호출 할 때 contextDestroyed이라고합니다.
우리는 어떤 활동을 사용할 수 있음을 사용자에게 통지, 단계 # 2 동안 살아 응용 프로그램을 수 있도록하고 싶습니다.
좋은 질문입니다. 거부 될 활동이 특정 서블릿에서 구현되는 경우 DB 조회에서 시스템 종료가 진행 중임을 나타내는 경우 항상 4xx 범위의 상태를 반환 할 수 있습니다. –
일부 활동은 UI 작업에 의해 시작되고 일부 활동은 스케줄러에 의해 시작됩니다. 그래서 DAO 계층에서 활동을 제어 할 생각입니다. –