2012-12-07 7 views
2

JSF-2 응용 프로그램에서 작업 중입니다. 사용자가 작업을 수행 할 때 서버 측 타이머를 시작해야합니다.
이 타이머는 응용 프로그램 자체와 관련되어야하므로 사용자 세션이 종료 된 후에도 살아남 아야합니다.
이 문제를 해결하기 위해 java.util.Timer 클래스를 사용하여 응용 프로그램 범위의 Bean에서 타이머 객체를 인스턴스화했습니다.
좋은 해결책이 될 수 있을까요? 이것을 채우기위한 다른 더 좋은 방법이 있습니까? EJB 기능 (바람둥이, 부두 등 ..)이 나던 당신의 용기, 당신은 석영 스케줄러 라이브러리와 함께 갈 수 있다면 감사JSF-2 응용 프로그램의 서버 측 타이머

+1

당신이 EJB를 사용하고 이것이 당신의 유스 케이스 커버 할 수처럼

뭔가 (타이머가 다 떨어지기 때 @Timeout 주석이 방법 호출됩니다)? 이 경우 EJB 3.1의 타이머 서비스를 사용할 수 있습니다. –

+0

아니요, EJB를 사용하고 있지 않습니다. –

답변

3

없음 EJB 컨테이너

는 : http://quartz-scheduler.org/

또한 멋진 코드가 샘플 : http://quartz-scheduler.org/documentation/quartz-2.1.x/examples/Example1

EJB 3.1

앱이 서버는 EJB가있는 경우 3 .1 (glassfish, Jboss), 타이머를 만드는 자바 ee 표준 방법이 있습니다. 주로 @Schedule 및 @Timeout 주석을 조사하십시오.

import javax.annotation.Resource; 
import javax.ejb.Stateless; 
import javax.ejb.Timeout; 
import javax.ejb.Timer; 
import javax.ejb.TimerConfig; 
import javax.ejb.TimerService; 

@Stateless 
public class TimerBean { 
    @Resource 
    protected TimerService timerService; 

    @Timeout 
    public void timeoutHandler(Timer timer) { 
     String name = timer.getInfo().toString(); 
     System.out.println("Timer name=" + name); 
    } 

    public void startTimer(long initialExpiration, long interval, String name){  
     TimerConfig config = new TimerConfig(); 
     config.setInfo(name); 
     config.setPersistent(false); 
     timerService.createIntervalTimer(initialExpiration, interval, config); 
    } 
} 
+0

감사합니다. 석영 스케쥴러 라이브러리를 살펴 보겠습니다. –

+0

유용한 답변 – prageeth

관련 문제