Comment faire pour démarrer un EJB de la Minuterie sur le déploiement?

J'ai besoin de créer un intervalle de Minuterie qui est configuré pour s'exécuter une fois par semaine automatiquement. Je ne veux pas pour commencer, en fonction de l'entrée utilisateur, mais je veux qu'il soit créé lorsque l'application est déployée sur le serveur. Tous les exemples que j'ai vu a une autre classe de départ de la minuterie. Je ne veux pas utiliser un message driven bean pour créer le minuteur, parce que la vérification devrait simplement des requêtes sur une base de données pour une période de temps donnée et n'est pas basé sur des actions qui, d'envoyer des messages.

J'ai inclus un exemple d'une Minuterie. Dans l'exemple ci-dessous, le compte à rebours faut tirer toutes les 10 minutes. Comme un test, je veux la minuterie de feu toutes les 10 minutes afin que je puisse tester la minuterie.

@Stateless
public class TimerTest implements
        TimerTestLocal, TimerTestRemote{

    @Resource 
    private TimerService timerService;
    private Logger log = Logger.getLogger(TimerTest.class);
    private long interval = 1000 * 60 * 10;
    private static String TIMER_NAME = "AuditTimer";

    public void scheduleTimer() throws NamingException {
        //TODO Auto-generated method stub
        Calendar cal = Calendar.getInstance();
        //cal.set(Calendar.HOUR_OF_DAY, 23);//run at 11pm
        //cal.set(Calendar.MINUTE, 00);
        //cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm");
        log.debug("schedule for: " + sdf.format(cal.getTime()));

        timerService.createTimer(cal.getTime(), interval, TIMER_NAME);
    }

    public void cancelTimer() {
        for(Object obj : timerService.getTimers())
        {
            Timer timer = (Timer)obj;
            if(timer.getInfo().equals(TIMER_NAME))
                timer.cancel();
        }
    }

    @Timeout
    public void timerEvent(Timer timer) {
        log.debug("timer fired");
    }


}

Si il ya une manière que je peux commencer cette minuterie lorsque l'application est déployée? Je ne pense pas que c'est une bonne idée de la création de la Minuterie de @PostConstruct méthode en raison de la classe de chargeuses sur le serveur.

OriginalL'auteur scheibk | 2009-08-12