[Resolvido] Web.xml executar EJB

3 respostas
majjhor

Olá pessoal,

Crieu um processo de agendamento utilizando as classes Timer e TimerTask. com o uso de EJB 3.

Porém, após o agendamento que ocorre naturalmente, preciso criar uma forma de que essas tarefas sejam executadas com sucesso, caso exista uma queda de energia.
No entanto, eu tenho um método no meu Bean que execute todas as tarefas novamente caso não estejam realizadas.

@Override
    public void reprocessarAgendamento() {
        List<AgendarTarefa> lista = entityManager.createQuery("select o from AgendarTarefa o where o.status = false ").getResultList();
        
        //Instancias de Timer e TimerTask
        Timer timer = new Timer();
        Tarefa task = new Tarefa();

        //Laço responsável pelo agendamento das Tarefas
        for (AgendarTarefa object : lista) {
            task.setAt(object);
            timer.schedule(task, object.getDataAgendamento());
        }
    }

Preciso que esse método seja executado ao reiniciar o servidor e startar meu servidor Glassfish v2, sendo automático reagendamento dos meus processos.

grato.

3 Respostas

joaosouza

Fala majjhor blz?

Cara não sei se isso pode te ajudar, mas dá uma olhada nos links abaixo:

http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletContextListener.html

http://www.java-tips.org/java-tutorials/tutorials/introduction-to-servlet-listener-using-eclipse.html

Espero q possa ter ajudado.

majjhor
joaosouza:
Fala majjhor blz?

Cara não sei se isso pode te ajudar, mas dá uma olhada nos links abaixo:

[url]http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletContextListener.html[/url]

[url]http://www.java-tips.org/java-tutorials/tutorials/introduction-to-servlet-listener-using-eclipse.html[/url]

Espero q possa ter ajudado.

Obrigado Joaosouza, deu certo.

Foi esta a solução:

public class ServletListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        try {
            AgendarTarefaRemote atr = EJBs.lookup(AgendarTarefaRemote.class);
            atr.reprocessarAgendamento();
        } catch (Exception ex) {
            ex.printStackTrace()
        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {}
    
}
<listener>
        <listener-class>ServletListener</listener-class>
</listener>
joaosouza

Boa garoto,

Eh isso aí… quando tiver dúvidas eh só postar…

Criado 12 de maio de 2010
Ultima resposta 12 de mai. de 2010
Respostas 3
Participantes 2