Gestión de temporizadores persistentes de EJB creados automáticamente

Las aplicaciones o los módulos utilizan la anotación javax.ejb.Schedule o el elemento de planificación en el descriptor de despliegue XML para indicar al servidor de aplicaciones que cree temporizadores EJB automáticamente. Se proporciona un MBean para gestionar la creación de los temporizadores persistentes de EJB creados automáticamente.

Acerca de esta tarea

El servidor Liberty crea los temporizadores persistentes automáticos EJB para una aplicación la primera vez que se inicia la aplicación en el proceso del servidor. Los temporizadores y una indicación de que se han creado se almacenan en la base de datos asociada al PersistentExecutor, configurado para el servicio de temporizador de EJB. Una vez creados, los temporizadores persistentes creados automáticamente para una aplicación no se volverán a crear hasta que la acción se realice para borrar específicamente la indicación de que se han creado de la base de datos. Aunque se hayan eliminado todos los temporizadores creados automáticamente para una aplicación, el servidor Liberty no volverá a crear ninguno de ellos, hasta que también se elimine la indicación de que se han creado.

El borrado de la indicación de que los temporizadores creados automáticamente se han creado se puede realizar o bien borrando manualmente la base de datos del temporizador, o bien utilizando el MBean del servicio del temporizador de EJB. El MBean del servicio de temporizador de EJB se puede utilizar a través de programas o a través de una herramienta como, por ejemplo, JConsole. La interfaz para el MBean del servicio de temporizador de EJB es: com.ibm.websphere.ejbcontainer.mbean.EJBPersistentTimerServiceMXBean.

Procedimiento

  1. Configure el servidor de aplicaciones para incluir una característica de EJB que soporte temporizadores persistentes y el conector REST en el archivo server.xml.
    <featureManager>
         <feature>servlet-3.1</feature>
         <feature>ejbPersistentTimer-3.2</feature>
         <feature>jdbc-4.1</feature>
         <feature>restConnector-1.0</feature>
    </featureManager>
  2. Configure el servidor de aplicaciones para incluir un origen de datos para el servicio de temporizador de EJB en el archivo server.xml.
    <dataSource id="DefaultDataSource" jdbcDriverRef="DerbyEmbedded">
         <properties.derby.embedded createDatabase="create" databaseName="${server.config.dir}/data/EJBTimerDB"/>
    </dataSource>
    <jdbcDriver id="DerbyEmbedded" libraryRef="DerbyLib"/>
    <library id="DerbyLib">
         <file name="${server.config.dir}/derby/derby.jar"/>
    </library>
  3. Obtenga la conexión del servidor MBean.
  4. Obtenga el MBean del servicio de temporizador persistente de EJB.
    import javax.management.MBeanServerConnection;
    import avax.management.ObjectName;
    import com.ibm.websphere.ejbcontainer.mbean.EJBPersistentTimerServiceMXBean;
    ...
    MBeanServerConnection mbsc = <step #3>;
    ObjectName on = new
    ObjectName("WebSphere:feature=ejbPersistentTimer,type=EJBPersistentTimerService,name=EJBPersistentTimerService");
    EJBPersistentTimerServiceMXBean timerServiceMBean =
         JMX.newMXBeanProxy(mbsc, on, EJBPersistentTimerServiceMXBean.class);
  5. Elimine los temporizadores persistentes creados automáticamente para la aplicación.
    timerServiceMBean.removeAutomaticTimers("<application name>");

    El método removeAutomaticTimers() del MBean elimina tanto los temporizadores creados automáticamente, como la indicación de que se han creado. La próxima vez que el servidor inicia la aplicación, se crean los temporizadores persistentes creados automáticamente.


Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_ejb_perstimer_manage_auto.html