Vermeiden Sie es, den Timer bei Glassfischen auszulöschen

Ich habe eine mit @Schedule kommentierte Methode, die von Zeit zu Zeit vom Container aufgerufen wird.

@Schedule(second = "*/5", minute = "*", hour = "*", persistent = false)
public void myTimerMethod() throws Exception {
    ...
}

Das Problem besteht unter bestimmten Bedingungen. Ich möchte, dass diese Methode eine Ausnahme auslöst, damit die laufende Transaktion zurückgesetzt wird. Aber wenn ich das mehr als zweimal mache, wird der Timer gelöscht und nicht mehr aufgerufen!

INFO: EJB5119:Expunging timer ['68@@1359143163781@@server@@domain1' 'TimedObject = MyBean' 'Application = My-War' 'BEING_DELIVERED' 'PERIODIC' 'Container ID = 89072805830524936' 'Fri Jan 25 21:49:30 CET 2013' '0' '*/5 # * # * # * # * # * # * # null # null # null # true # myTimerMethod # 0' ] after [2] failed deliveries

Ich weiß, dass ich Timer-Neuplanung in domain.xml mit konfigurieren kann

<domains>
    ...
    <configs>
        <config>
            ...
            <ejb-container session-store="${com.sun.aas.instanceRoot}/session-store">
               <ejb-timer-service>
                     <property name="reschedule-failed-timer" value="true"></property>
                </ejb-timer-service>
            </ejb-container>
            ...
        </config>
    </configs>
    ...
</domains>

Aber meine Frage ist, kann ich diese Einstellung konfigurieren, wenn ich meine Anwendung bereitstelle?

Kann es nicht finden in:

glassfish-resources.xml
glassfish-ejb-jar.xml
glassfish-web.xml

Gibt es eine Möglichkeit, dies programmgesteuert zu tun?

(Meine Motivation dahinter, die Serverkonfiguration wie diese in Konfigurationsdateien zu setzen, anstatt den Server zu konfigurieren, ist, dass meine App direkt auf einer Neuinstallation von glassfish installiert werden kann.)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage