Criar um agendador para disparar a cada minuto e fazer algo

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;
 .....
}

Estude o uso da classe TimerTask do Java.

O Primefaces tem um componente que faz requisições ajax periodicamente.
http://www.primefaces.org:8080/prime-showcase/ui/ajaxPollHome.jsf

Outra opção seria utilizar o java Timer
http://www.guj.com.br/posts/list/35972.java

você tambem poderia usar a classe Timer do java e criar um metodo para fazer tal procedimento.

Bom eu tenho uma nova duvida, onde eu implemento um timer task ,

em um managedbean , ou outro lugar ?

quero que ele fique ativo durante toda a aplicação.

Se vc estiver utilizando EjB pode utilizar os servicos do container.
se sim mande um amp que eu te ajudo aki.
abracos.

cara…pra essa tarefa mais simples…vc pode usar o a4j:poll e dentro dele ficar renderizando um h:outputText a cada minuto…bem sussa…

Você pode utilizar o Quartz, vai resolver seu problema!

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 ?

Vc pode criar um listener para executar o seu Timer,aki uso EJB:

import javax.ejb.EJB;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import ejb.ITimedBean;

public class LoadTimer implements ServletContextListener {
@EJB(name="timerBean", mappedName="ejb/timedBean")
private ITimedBean timerBean;

public void contextInitialized(ServletContextEvent servletcontextevent) {
  System.out.println("Starting timer");
  timerBean.startTimer();
}

public void contextDestroyed(ServletContextEvent servletcontextevent) {

}


}

no seu web xml:

&lt;listener&gt;
  &lt;listener-class&gt;servlets.LoadTimer&lt;/listener-class&gt;
&lt;/listener&gt;

Assim ele sobe no deploy da aplicacao.

onde posso achar mais coisas sobre ejb, gostaria de implementar em meu projeto , se tiver alguns links
me envie por favor.