2008-12-30 9 views
6

Zum Beispiel Wenn ich einen Timer für den Ablauf jeden Tag um Mitternacht einstelle, was passiert dann, wenn ein "Fehlzündung" (wird der Rückruf nicht ausgelöst, weil der Server zum Beispiel ausgefallen ist)? Ich kann das in der Dokumentation nicht finden.Sollen EJB-Timer dauerhaft/zuverlässig sein?

Gibt es eine Möglichkeit, dass dieser Timer den Callback sooft auslöst, wie der Server neu startet?

PS: Ich weiß über Quartz, ich evaluiere EJB-Timer als Alternative.

Antwort

4

Sie können einen TimerHandle verwenden, um einen Timer persistent zu machen. EJB-Zeiten wurden entwickelt, um Containerabstürze zu überstehen.

Siehe diese article für einen Vergleich zwischen EJB-Zeiten und anderen Scheduler-Systemen wie Quarz.

3

Aus Erfahrung kann ich Ihnen sagen, dass in Glassfish ein verpasster Timer ausgelöst wird, sobald der Server wieder hochgefahren ist. Wenn Ihr Server für zwei oder mehr verpasste Timeouts nicht verfügbar ist, wird er nur einmal ausgelöst, nicht einmal für jedes verpasste Timeout. Es geht dann zurück zu Ihrem regelmäßig geplanten Programm.

Verwandte Themen