Gestores de temporizadores

El gestor de temporizadores combina las funciones de gestor de alarmas de beans asíncronos y ámbito asíncrono. De esta manera, cuando se crea un gestor de temporizadores, éste utiliza internamente un ámbito asíncrono para proporcionar las funciones de ciclo de vida del gestor de temporizadores.

Característica obsoleta: Frijoles asíncronos y CommonJ Timer y WorkManager son facilidades de programación asíncronas obsoletas. Concurrency Utilities for Java EE sustituye estos recursos de planificación en desuso. La versión 9 continúa dando soporte al gestor de trabajo y el temporizador de beans asíncronos y CommonJ. Sin embargo, la documentación de la versión 9 se centra en las utilidades de concurrencia para Java EE. Si no encuentra la información sobre los gestores de temporizadores que busca en la documentación de la versión 9, consulte la documentación de la versión 8.5.5.

Puede buscar el gestor de temporizadores en el espacio de nombres Java Naming and Directory Interface (JNDI). Este recurso es diferente al del gestor de alarmas que se recupera a través del ámbito de beans asíncronos. Cada búsqueda del gestor de temporizadores devuelve un nuevo gestor de temporizadores lógico que puede destruirse independientemente de todos los otros gestores de temporizadores.

Un gestor de temporizadores puede configurarse con un número de agrupaciones de hebras a través de la consola administrativa. En caso de despliegue, puede enlazar este gestor de temporizadores a una referencia de recurso en el momento del ensamblaje, de modo que la aplicación puede utilizar la referencia de recurso para buscar el gestor de temporizadores.

El código Java para buscar el gestor de temporizadores es:
InitialContext ic = new InitialContext();
TimerManager tm = (TimerManager)ic.lookup("java:comp/env/tm/TimerManager");

El modelo de programación para establecer la escucha de alarmas y la escucha de temporizadores es diferente. El siguiente ejemplo de código muestra la diferencia.

Tabla 1. Configure el oyente del temporizador. Modelo de programación para configurar el escucha de temporizador
Beans asíncronos CommonJ
		public class ABAlarmListener implements 
AlarmListener {
	   	public void fired(Alarm alarm) {
	      	System.out.println(“Alarm fired. 
Context =” + alarm.getContext());
	  			}
	public class StockQuoteTimerListener implements
	TimerListener {
	String context; 
	String url;
	  public StockQuoteTimerListener(String context,
	  String url){
	     this.context = context;
	     This.url = url;
	  }
	  public void timerExpired(Timer timer) {
	     System.out.println(“Timer fired. Context =”+ 
((StockQuoteTimerListener)timer.getTimerListener())
.getContext());
	
	}
	   public String getContext() {
	    return context;
	   }
	}
Nota: Cuando utilice el gestor de temporizadores CommonJ recuerde configurar las referencias de recursos en su application.xml dentro de los contextos java:app o java:global . Por ejemplo, su archivo application.xml debería ser similar al siguiente:
<res-ref-name>java:app/env/timerManger</res-ref-name>
y el archivo ibm-application-bnd.xml debe contener algo similar a lo siguiente:
<resource-ref-name="java:app/env/timerManager" binding-name="tm/default"/>
Asegúrese de que el archivo de configuración Spring contenga un valor similar al siguiente:
value="java:app/env/timerManager"