Evitando o "Expunging" de um EJB Scheduler

0 respostas
G

Tenho um EJB Scheduler com o código

@Stateless
@Local
public class OnlineBackupJob {

    @Schedule(second = "0", minute = "*", hour = "*")
    protected void scheduledTimeout(final Timer t) {
        // faz alguma coisa
    }
}

Quando há alguma RuntimeException o JTA faz o rollback normalmente, porém após o segundo rollback o container desativa o scheduler e nunca mais o executa.

Criei então um método interno nesse mesmo EJB chamado doBackup que possui o atributo para usar uma nova transação, porém mesmo assim após as duas execuções o scheduler é desativado.

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
private void doBackup() {
    // faz alguma coisa
}

Como posso então fazer para evitar que o container desative "para sempre" meu scheduler?

Caused by: javax.ejb.TransactionRolledbackLocalException: Client's transaction aborted
	at com.sun.ejb.containers.BaseContainer.useClientTx(BaseContainer.java:4625)
	at com.sun.ejb.containers.BaseContainer.preInvokeTx(BaseContainer.java:4503)
	at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1875)
	at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:188)
	... 37 more

INFO: EJB5119:Expunging timer ['2@@1279410748624@@server@@domain1' 'TimedObject = OnlineBackupJob' 'BEING_DELIVERED' 'PERIODIC' 'Container ID = 83847456082886672' 'Sat Jul 17 20:53:00 BRT 2010' '0' '0 # * # * # * # * # * # * # null # null # null # true # scheduledTimeout # 1' ] after [2] failed deliveries
Criado 17 de julho de 2010
Respostas 0
Participantes 1