Ejemplo: Utilización del servicio de temporizador con la interfaz TimedObject

En este ejemplo se muestra la implementación del método ejbTimeout() al que se llama cuando se producen sucesos planificados.

Best practice Best practice: El modelo de programación EJB 3.x proporciona métodos estratégicos adicionales para definir temporizadores persistentes y no persistentes en los entornos empresariales. Si bien sigue dándose soporte para la definición de temporizadores persistentes utilizando el método ejbTimeout con la interfaz TimedObject, ahora puede beneficiarse de las ventajas ofrecidas por las anotaciones EJB de fácil implementación para crear temporizadores persistentes y no persistentes para satisfacer las necesidades de la empresa. Consulte la información acerca del uso del servicio de temporizador EJB para enterprise beans para saber cómo crear temporizadores persistentes y no persistentes utilizando anotaciones o definiendo sus propios métodos de tiempo de espera en un descriptor de despliegue.bprac

El método ejbTimeout puede contener cualquier código que normalmente se sitúa en un método de empresa del bean. El ensamblador de aplicaciones puede asociar los atributos de nivel de método, como transaction o runAs, con este método. Una instancia del objeto Timer que hace que el método a iniciar pase como un argumento para el método ejbTimeout.

import javax.ejb.Timer;
import javax.ejb.TimedObject;
import javax.ejb.TimerService;

public class MyBean implements EntityBean, TimedObject {

  // El contenedor de EJB llama a este método al caducar el Timer.
  public void ejbTimeout(Timer theTimer) {

    // Cualquier código que suela colocarse en un método EJB debe situarse aquí.

     String whyWasICalled = (String) theTimer.getInfo():
     System.out.println("Me han llamado debido a"+ whyWasICalled);
  } // fin del método ejbTimeout

Se crea un Timer que inicia el método ejbTimeout pasados 30 segundos. Un objeto de cadena simple se pasa en el momento de crear el Timer para identificarlo.

  // Variable de instancia que contiene el contexto de EJB.
  private EntityContext theEJBContext;

  // El contenedor de EJB llama a este método al crearse el bean.
  public void setEntityContext(EntityContext theContext) {

    // Guarde el contexto que se ha pasado al crear el bean.
    theEJBContext = theContext;
  } // fin del método setEntityContext

  // Este método de empresa hace que el método ejbTimeout se inicie al cabo de 30 segundos.
  public void fireInThirtySeconds() throws EJBException  {

    TimerService theTimerService = theEJBContext.getTimerService();
    String aLabel = "30SecondTimeout";
    Timer theTimer = theTimerService.createTimer(30000, aLabel);
  } // fin del método fireInThirtySeconds

} // fin de la clase MyBean

Icon that indicates the type of topic Reference topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rejb_timerex_v8
File name: rejb_timerex_v8.html