Automatisch erstellte persistente EJB-Zeitgeber verwalten

Anwendungen und Module verwenden die Annotation javax.ejb.Schedule oder das Element "schedule" im XML-Implementierungsdeskriptor, um den Anwendungsserver anzuweisen, automatisch EJB-Zeitgeber zu erstellen. Es wird eine MBean bereitgestellt, mit der die automatische Erstellung der persistenten EJB-Zeitgeber zu verwalten.

Informationen zu diesem Vorgang

Der Liberty-Server erstellt die automatischen persistenten EJB-Zeitgeber für eine Anwendung, wenn die Anwendung im Serverprozess zum ersten Mal gestartet wird. Die Zeitgeber und eine Meldung über deren Erstellung werden in der Datenbank gespeichert, die dem Element PersistentExecutor zugeordnet ist, das für den EJB-Zeitgeberservice konfiguriert wurde. Nachdem die automatisch erstellten persistenten Zeitgeber für eine Anwendung erstellt wurden, werden sie nicht erneut erstellt, bis eine Aktion ausgeführt wird, mit der die Meldung über die Erstellung der Zeitgeber aus der Datenbank explizit gelöscht wird. Selbst wenn alle automatisch erstellten Zeitgeber für eine Anwendung entfernt wurden, erstellt der Liberty-Server erst dann einen der Zeitgeber erneut, wenn die Meldung über die Erstellung der Zeitgeber entfernt wurde.

Die Meldung über die Erstellung automatisch erstellter Zeitgeber kann manuell oder mit der MBean für den EJB-Zeitgeberservice aus der Zeitgeberdatenbank gelöscht werden. Die MBean für den EJB-Zeitgeberservice kann über das Programm oder ein Tool wie JConsole verwendet werden. Die Schnittstelle für die MBean für den EJB-Zeitgeberservice ist com.ibm.websphere.ejbcontainer.mbean.EJBPersistentTimerServiceMXBean.

Vorgehensweise

  1. Konfigurieren Sie den Anwendungsserver und schließen Sie ein EJB-Feature, das persistente Zeitgeber und den REST-Connector unterstützt, in die Datei server.xml ein.
    <featureManager>
         <feature>servlet-3.1</feature>
         <feature>ejbPersistentTimer-3.2</feature>
         <feature>jdbc-4.1</feature>
         <feature>restConnector-1.0</feature>
    </featureManager>
  2. Konfigurieren Sie den Anwendungsserver so, dass eine Datenquelle für den EJB-Zeitgeberservice in die Datei server.xml eingeschlossen wird.
    <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. Rufen Sie die MBean-Serververbindung ab.
  4. Rufen Sie die MBean für den Service für persistente EJB-Zeitgeber ab.
    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. Entfernen Sie die automatisch erstellten persistenten Zeitgeber für die Anwendung.
    timerServiceMBean.removeAutomaticTimers("<application name>");

    Die Methode removeAutomaticTimers() in der MBean entfernt die automatisch erstellten Zeitgeber und die Meldung über deren Erstellung. Wenn der Server die Anwendung das nächste Mal startet, werden die automatisch erstellten persistenten Zeitgeber erstellt.


Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_ejb_perstimer_manage_auto.html