Opciones de configuración para temporizadores Enterprise JavaBeans persistentes

Los temporizadores EJB no requieren ninguna configuración, excepto habilitar la característica ejbPersistentTimer y configurar el origen de datos predeterminado, que tiene un ID de DefaultDataSource, de modo que apunte a una base de datos. Hay valores de configuración opcionales disponibles para controlar el comportamiento, tal como elegir un origen de datos diferente, controlar cuándo y con qué frecuencia se sondea la base de datos en busca de tareas del temporizador con persistencia y si se han de reintentar las tareas del temporizador anómalas o retrotraídas y con qué frecuencia.

La configuración del temporizador EJB se especifica mediante un elemento de configuración timerService opcional. Los atributos de configuración para los temporizadores EJB persistentes se agrupan adicionalmente bajo una configuración persistentExecutor. De forma predeterminada, el servicio del temporizador EJB utiliza una instancia de ejecutor persistente denominada DefaultEJBPersistentTimerExecutor. Se puede personalizar la configuración del temporizador EJB persistente configurando el servicio del temporizador para que utilice una instancia del ejecutor persistente diferente. Sin embargo, el método recomendado para personalizar la configuración del temporizador persistente EJB es alterar temporalmente la instancia de defaultEJBPersistentTimerExecutor, de modo que pueda heredar los valores predeterminados de la instancia de defaultEJBPersistentTimerExecutor.

Por ejemplo, para alterar temporalmente solo el límite de reintentos,
 <persistentExecutor id="defaultEJBPersistentTimerExecutor" retryLimit="50"/>
Personalización del almacén de base de datos para las tareas de temporizador persistente
Las tareas del temporizador EJB persistente persisten en la base de datos. La configuración relacionada con la base de datos se agrupa bajo el elemento de configuración databaseStore. A menos que se configure de otro modo, se utiliza una instancia de databaseStore denominada defaultDatabaseStore para los temporizadores EJB persistentes, así como para las otras características del producto que requieren una base de datos. Un ejemplo de alteración temporal de la instancia de defaultDatabaseStore:
 <databaseStore id="defaultDatabaseStore" dataSourceRef="DB2DataSource" tablePrefix="MYTIMERS"/>
Un ejemplo de configuración de la instancia de defaultEJBPersistentTimerExecutor para utilizar una instancia de databaseStore diferente:
  <persistentExecutor id="defaultEJBPersistentTimerExecutor" taskStoreRef="MyDBStore"/>
  <databaseStore id="MyDBStore" dataSourceRef="DB2DataSource" tablePrefix="MYTIMERS">
    <authData user="user1" password="password1"/>
  </databaseStore>
Habilitación e inhabilitación de la ejecución de tareas del temporizador persistente

Las tareas del temporizador EJB persistente se habilitan para que se ejecuten, una vez se ha confirmado la transacción desde la que están planificadas. Para impedir que se ejecuten las tareas del temporizador persistente, puede configurar el atributo enableTaskExecution con un valor false y en tal caso el servicio del temporizador EJB continúa grabando las tareas del temporizador persistente en la base de datos pero no las ejecuta. Si el valor se cambia a true, el servicio del temporizador EJB comienza ejecutar los temporizadores planificados previamente, así como los temporizadores nuevos que se hayan planificado.

Personalización del sondeo del almacén persistente para las tareas del temporizador
Tras el arranque, se realiza un sondeo inicial individual del almacén persistente para localizar cualquier tarea del temporizador planificada previamente. Cuando se planifican las tareas, la información acerca del siguiente tiempo de ejecución planificado persiste y también se conserva en la memoria, por lo que resulta innecesario realizar un sondeo adicional del almacén persistente. Este comportamiento es ideal en muchos casos, pero es posible que no sea el deseado.
  • Si las tareas del temporizador tienen dependencias externas con otros servicios, es posible que el sondeo inicial se realice demasiado pronto y las tareas del temporizador pueden fallar debido a que los servicios externos que requieren no estén disponibles. Si esto sucede, se puede utilizar un retardo del sondeo inicial para diferir el sondeo inicial en un periodo de tiempo fijo.
  • Si se planifica un número elevado de temporizadores EJB persistentes, es posible que consuman demasiada memoria. En este caso, puede configurar un intervalo de sondeo para sondear de forma periódica el almacén persistente únicamente para las tareas del temporizador que desee ejecutar dentro del intervalo hasta el siguiente sondeo. El tamaño del sondeo limita adicionalmente el número de tareas del temporizador que se pueden leer desde la base de datos en cada intervalo de sondeo, con lo cual algunas tareas se pueden ejecutar con retraso.
Configuración de ejemplo:
<persistentExecutor id="defaultEJBPersistentTimerExecutor" initialPollDelay="5m" pollInterval="10m" pollSize="200"/>
Reintentos de tareas del temporizador persistente anómalas o retrotraídas

Cuando fallan las ejecuciones del temporizador EJB, o cuando se marcan para retrotracción, inmediatamente se vuelven a intentar una vez. Si falla el reintento inmediato, se vuelven a intentar en un intervalo de tiempo fijo hasta que se ejecutan correctamente. Se puede limitar el número de reintentos especificando un límite de reintentos en la configuración. También se puede controlar el intervalo entre reintentos especificando un intervalo de reintento en la configuración.

Configuración de ejemplo:
  <persistentExecutor id="defaultEJBPersistentTimerExecutor" retryLimit="100" retryInterval="2m"/>

Icono que indica el tipo de tema Tema de referencia

Nombre de archivo: rwlp_ejbtime_options.html