특정 요구 사항에 대해 ServletContextListener를 사용하는 것이 적절한 지 알 수 있습니까?Java/Apache Tomcat 웹 응용 프로그램에서 ServletContextListener의 적절한 사용
내가 갖고있는 것은 매 시간마다 특정 작업을 실행하여 많은 RSS 피드를 폴링하고 언제든지 사용자가 폴링을 위해 새 RSS 피드를 정의 할 수있는 웹 응용 프로그램입니다.
내가 피하고 싶은 것은 사용자가 현재 시간별 폴링주기 동안 피드를 추가하고 해당주기에이 피드를 포함시키는 것입니다.
그래서 저는 폴링 사이클의 실행 여부를 기록하는 정적 부울 변수와 함께 ServletContextListener를 사용하고 있습니다. 매시간 폴링주기가 실행중인 경우 사용자가 정의한 새 피드는이주기에 포함되지 않습니다. 폴링이 실행 중이 아니면 다음 시간마다 피드를 포함시킬 수 있습니다.
누구든지 조언 할 수 있습니까? 내가 볼 수있는 유일한 대안은 데이터베이스 테이블에 플래그를 사용하거나 속성 파일의 값을 업데이트하는 것입니다 (수행 할 수있는 경우).
감사합니다.
Martin O'Shea.
이것은 정확히 필요한 것입니다. 따라서 POLLING_CYCLE_FLAG_ATTR은 서블릿 컨텍스트의 전역 변수가됩니까? –
한 가지 질문. 서블릿을 사용하여 시스템 시작시 폴링을 no로 설정할 수 있지만 시간별 폴링을 실행하는 클래스는 서블릿이 아닙니다. ServletContext는 표준 클래스에서 액세스 할 수 있습니까? 아니면 폴링 클래스를 변환해야합니까? 나에게 이것은 서블릿이 주로 요청/응답 수단 인 경우 거의 이해가되지 않는다. –
웹 앱이 매 시간마다 특정 작업을 실행한다고 가정 했으므로 작업이 웹 앱 내에서 시작되었다고 가정했습니다. 그렇다면 작업을 시작할 시점에서 서블릿 컨텍스트에 액세스해야합니다. 서블릿의 getServletContext() 메소드를 사용하여 언제든지 ServletContext에 액세스 할 수 있습니다. 컨텍스트를 웹 응용 프로그램의 네임 스페이스로 생각하는 것이 가장 좋습니다. 응용 프로그램이 여러 노드의 컨테이너에 클러스터 된 경우 리스너의 라이프 사이클 후크를 사용하여 공유 리소스 (일반적으로 db)의 컨텍스트 특성을 동기화해야합니다. – alphazero