管理自动创建的 EJB 持久性计时器

应用程序或模块在 XML 部署描述符中使用 javax.ejb.Schedule 注释或计划元素以指示应用程序服务器自动创建 EJB 计时器。系统提供 MBean 以管理自动创建的 EJB 持久性计时器的创建。

关于此任务

应用程序在服务器进程中首次启动时,Liberty 服务器为应用程序创建 EJB 自动持久性计时器。计时器及说明已创建计时器的指示存储在与针对 EJB 计时器服务配置的 PersistentExecutor 相关联的数据库中。对于为应用程序自动创建的持久性计时器,一旦创建,除非执行操作以从数据库中专门清除有关说明已创建这些计时器的指示,否则不会再次创建这些计时器。即使为应用程序自动创建的所有计时器已被移除,用于说明已创建这些计时器的指示被移除之前,Liberty 服务器不会创建其中任何计时器。

清除有关说明已自动创建计时器的指示可通过手动清除计时器数据库或使用 EJB 计时器服务 MBean 完成。EJB 计时器服务 MBean 可通过程序使用或通过 JConsole 之类的工具使用。EJB 计时器服务 MBean 的接口为:com.ibm.websphere.ejbcontainer.mbean.EJBPersistentTimerServiceMXBean

过程

  1. 配置应用程序服务器以在 server.xml 文件中包含支持持久性计时器和 REST 连接器的 EJB 功能部件。
    <featureManager>
         <feature>servlet-3.1</feature>
         <feature>ejbPersistentTimer-3.2</feature>
         <feature>jdbc-4.1</feature>
         <feature>restConnector-1.0</feature>
    </featureManager>
  2. 配置应用程序服务器以在 server.xml 文件中包含 EJB 计时器服务的数据源。
    <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. 获取 MBean 服务器连接。
  4. 获取 EJB 持久性计时器服务 MBean。
    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. 移除为应用程序自动创建的持久性计时器。
    timerServiceMBean.removeAutomaticTimers("<application name>");

    MBean 上的 removeAutomaticTimers() 方法移除自动创建的计数器以及说明已创建这些计时器的指示。下次服务器启动该应用程序时,将创建自动创建的持久性计时器。


用于指示主题类型的图标 任务主题

文件名:twlp_ejb_perstimer_manage_auto.html