ApplicationScoped 빈을 가지고 백그라운드 작업을 수행하는 별도의 스레드를 실행합니다. 쓰레드에는 terminate()이라는 이름으로 끝내는 메소드가 있습니다. 해당 메서드를 통해 종료되지 않으면 무한 루프에서 실행되고 아무 것도 수행하지 않으면 잠시 동안 잠자기 상태가됩니다.JSF 응용 프로그램에서 스레드 누수를 수정하려면 어떻게합니까?
문제는 내가 개발 모드 (Netbeans -> Maven)이고 응용 프로그램을 다시 컴파일 할 때마다 Maven 플러그 인이 응용 프로그램을 배포 취소하고 재배포합니다 (가장 편리하게 말해야 함)하지만 배경 스레드는 마지막 배포가 중단됩니다. 잠자기에서 깨어나 더 이상 존재하지 않는 JPA EntityManager에 액세스하려고하기 때문에 결국 Exception으로 종료됩니다.
응용 프로그램이 중지되면 terminate() 메서드를 자동으로 호출하는 것이 좋습니다. JSF 2.0 스펙 레벨에서이를 수행 할 리스너를 구현할 수있는 방법이 있습니까? 그렇지 않다면 서블릿 레벨은 어떨까요?
이것은 GlassFish 3.1.1을 사용하고 있습니다.
관련 : http://stackoverflow.com/questions/ 7499534/applicationscope-bean-that-uses-a-timertask-sheduler-good-or-bad – BalusC