Boa tarde a todos,
sou novo em jsf, e nao sei como poderia criar
um timer para que esse disparasse a cada minuto e fizesse uma tarefa .
exemplo :
a cada minuto eu gostaria de pegar todos os usuarios que estao logados
e dizer ola, já tenho um managedbean Usuario e a minha pagina jsf em questao ja se atualiza a cada 1 minuto por ajax, so preciso saber dizer oi para eles. rs
public class Usuario {
private String nome;
private String msgRecebida;
.....
}
o agendador ou timer tem que ser feito no controller, pois sera utilizado para toda a aplicação, e nao posso confiar em
views (jsp ),
o que estou em duvida é o seguinte,
Não estou usando ejb, ainda nao sei como usar …
Estou usando uma aplicação simples feita no eclipse, web dinamica, com jsf , primefaces e richfaces.
a questão é a seguinte.
eu criei uma classe
package br.com.vdl.jobs;
import java.util.TimerTask;
public class JobTeste extends TimerTask {
public void run() {
System.out.println("tarefa executada");
}
}
apos eu peguei um managedBean que esta em nivel de aplicação
no meu caso
FornecedorHandle
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import javax.faces.context.FacesContext;
import br.com.vdl.jobs.ContagemRegressiva;
import br.com.vdl.jobs.JobTeste;
import br.com.vdl.managedBeans.observable.FornecedorObservable;
import br.com.vdl.model.Fornecedor;
public class FornecedorHandle {
private Fornecedor fornecedor = new Fornecedor();
private List<Fornecedor> fornecedores = new ArrayList<Fornecedor>();
private long count = 0L;
public FornecedorHandle(){
System.out.println("iniciei");
Timer time = new Timer();
time.schedule(new JobTeste, 1000, 1000);
}
//---outros metodos
e coloquei no seu construtor o codigo para executar as tarefas de um em um segundo
porem nao esta muito legal
esta funcionando, mas parece gambiarra…rs
nao tem algum jeito de falar : Assim que iniciar o tomcat ativa o timer e deixa ele em nivel de aplicação ?