EJB3.0 컨테이너에서 하우스 키핑 스레드를 실행할 필요가 있습니다. 우리는 현재 "TimerService"@Stateless EJB가 필요합니다 (다른 @EJB가 삽입되어 있기 때문에 필요합니다). startTimer() 메소드가 호출 될 때 간격 EJB 타이머를 생성합니다. 이 타이머 스레드의 인스턴스는 하나만 있어야합니다. 현재 솔루션은 서블릿 중 하나의 init() 메소드에서 startTimer()를 호출하는 것을 포함합니다. 서블릿은 web.xml을 사용하여 시작할 때 강제로로드되지만, 일을 수행하는 올바른 방법 대신 우발적 인 동작처럼 느껴집니다 . 우리는 이미 다른 사람이 그 서블릿을 서브 클래스 화했기 때문에 문제가있었습니다. 즉, init()이 두 번 호출되었으므로 두 개의 타이머 스레드를 의미했습니다.EJB3.0 컨테이너의 단일 백그라운드 스레드
이 작업은 비정상적인 요구 사항이 아닌 것처럼 느껴지므로이 작업을 수행하는 적절한 방법은 무엇입니까? 컨테이너에있는 다른 리소스에 묶지 않고 시작될 때 컨테이너에 스레드를 시작하도록 요청하는 간단한 방법이 있어야하는 것처럼 보입니다.
아마도 관련이 있습니까? http://stackoverflow.com/questions/2707733/eager-auto-loading-of-ejb-load-ejb-on-startup-on-jboss – Bozho
감사합니다. 승인 된 대답은 EJB3.1에 적용됩니다. 우리는 그렇지 않습니다. 사용하고 있지만 흥미로운 점은 다른 대답입니다. 3.1 이전의 가장 좋은 방법은 현재 사용하고있는 솔루션입니다. ( – RevBingo