Exemplo: Utilizando o Serviço de Cronômetro com a Interface TimeObject
Este exemplo mostra a implementação do método ejbTimeout() que é chamado quando o evento planejado ocorre.

O método ejbTimeout pode conter qualquer código que é geralmente colocado em um método de negócios do bean. Atributos de nível do método como transação ou runAs podem ser associados a este método pelo assembler de aplicativos. Uma instância do objeto Timer que faz com que o método seja disparado é passado como um argumento para o método ejbTimeout.
import javax.ejb.Timer;
import javax.ejb.TimedObject;
import javax.ejb.TimerService;
public class MyBean implements EntityBean, TimedObject {
// Esse método é chamado pelo contêiner EJB na expiração do Cronômetro.
public void ejbTimeout(Timer theTimer) {
// Qualquer código tipicamente colocado em um método EJB pode ser colocado aqui.
String whyWasICalled = (Cadeia) theTimer.getInfo():
System.out.println("I was called because of"+ whyWasICalled);
} // fim do método ejbTimeout
Um Cronômetro é criado para iniciar o método ejbTimeout em 30 segundos. Um objeto de cadeia simples é transmitido na criação do Cronômetro para identificá-lo.
// Variável da instância para manter o contexto de EJB.
private EntityContext theEJBContext;
// Esse método é chamado pelo contêiner EJB na criação do bean.
public void setEntityContext(EntityContext theContext) {
// Salvar o contexto da entidade transmitida na criação do bean.
theEJBContext = theContext;
} // end of method setEntityContext
// Esse método de negócios faz com que o método ejbTimeout seja iniciado em 30 segundos.
public void fireInThirtySeconds() throws EJBException {
TimerService theTimerService = theEJBContext.getTimerService();
String aLabel = "30SecondTimeout";
Timer theTimer = theTimerService.createTimer(30000, aLabel);
} // fim do método fireInThirtySeconds
} // fim da classe MyBean