Beispiel: Zeitgeberservice mit der Schnittstelle "TimedObject" verwenden

Das folgende Beispiel zeigt die Implementierung der Methode ejbTimeout(), die beim Eintreten des geplanten Ereignisses aufgerufen wird.

Bewährtes Verfahren Bewährtes Verfahren: Das Programmiermodell von EJB 3.x bietet zusätzliche Strategien für das Definieren persistenter und nicht persistenter Zeitgeber in Ihrem Geschäftsumfeld an. Das Definieren persistenter Zeitgeber mit der Methode ejbTimeout über die Schnittstelle TimedObject wird weiterhin unterstützt. Dennoch sollten Sie die einfach zu implementierenden EJB-Annotationen nutzen, um persistente und nicht persistente Zeitgeber für Ihre Geschäftsanforderungen zu erstellen. Im Artikel zur Verwendung des EJB-Zeitgeberservice für Enterprise-Beans finden Sie weitere Informationen zum Erstellen persistenter und nicht persistenter Zeitgeber unter Verwendung von Annotationen und zur Definition eigener timeout-Methoden im Implementierungsdeskriptor.bprac

Die Methode "ejbTimeout" kann jeden Code enthalten, der normalerweise in einer Geschäftsmethode der Bean verwendet wird. Der Anwendungsassemblierer kann der Methode Methodenattribute wie "transaction" oder "runAs" zuweisen. Eine Instanz des Zeitgeberobjekts, das die Methode auslöst, wird als Argument an die Methode "ejbTimeout" übergeben.

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

public class MyBean implements EntityBean, TimedObject {

  // Diese Methode wird vom EJB-Container beim Ablauf des Zeitgebers aufgerufen.
  public void ejbTimeout(Timer theTimer) {

    // Jeder Code, der normalerweise in eine EJB-Methode geschrieben wird, kann hier verwendet werden.

     String whyWasICalled = (String) theTimer.getInfo():
     System.out.println("I was called because of"+ whyWasICalled);
  } // Ende der Methode ejbTimeout

Es wird ein Zeitgeber erstellt, der die Methode "ejbTimeout" in 30 Sekunden erstellt. Bei der Zeitgebererstellung wird ein einfaches Zeichenfolgeobjekt übergeben, das den Zeitgeber identifiziert.

  // Instanzvariable für EJB-Kontext
  private EntityContext theEJBContext;

  // Diese Methode wird beim Erstellen der Bean vom EJB-Container aufgerufen.
  public void setEntityContext(EntityContext theContext) {

    // Beim Erstellen der Bean übergebenen Entitätskontext speichern
    theEJBContext = theContext;
  } // Ende der Methode setEntityContext

  // Diese Geschäftsmethode bewirkt, dass die Methode ejbTimeout nach 30 Sekunden gestartet wird.
  public void fireInThirtySeconds() throws EJBException  {

    TimerService theTimerService = theEJBContext.getTimerService();
    String aLabel = "30SecondTimeout";
    Timer theTimer = theTimerService.createTimer(30000, aLabel);
  } // Ende der Methode fireInThirtySeconds

} // Ende der Klasse MyBean

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rejb_timerex_v8
Dateiname:rejb_timerex_v8.html