Beispiel: Zeitgeberservice mit der Schnittstelle "TimedObject" verwenden
Das folgende Beispiel zeigt die Implementierung der Methode ejbTimeout(), die beim Eintreten des geplanten Ereignisses aufgerufen wird.

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