配置持續性 Enterprise JavaBeans 計時器的選項

除了啟用 ejbPersistentTimer 特性,並將 ID 為 DefaultDataSource 的預設資料來源設定成指向資料庫之外,持續性 EJB 計時器並不需要其他任何的配置。您可以使用選用的配置設定來控制行為,例如:選擇不同的資料來源、控制輪詢資料庫以尋找持續保存的計時器作業的時機和頻率,以及是否重試失敗或回復的計時器作業,以及其頻率。

EJB 計時器配置是利用選用的 timerService 配置元素來指定。持續性 EJB 計時器的配置屬性會進一步分組在 persistentExecutor 配置之下。依預設,EJB 計時器服務會使用名稱是 defaultEJBPersistentTimerExecutor 的持續性執行程式實例。您可以將計時器服務配置成使用不同的持續性執行程式實例,來自訂 EJB 持續性計時器配置。不過,自訂 EJB 持續性計時器配置的最佳作法是置換 defaultEJBPersistentTimerExecutor 實例,以便繼承 defaultEJBPersistentTimerExecutor 實例中的預設值。

例如,只置換重試限制:
 <persistentExecutor id="defaultEJBPersistentTimerExecutor" retryLimit="50"/>
自訂持續性計時器作業的資料庫儲存庫。
持續性 EJB 計時器作業會持續保存到資料庫中。資料庫的相關配置會分組在 databaseStore 配置元素之下。除非另行配置,持續性 EJB 計時器以及需要資料庫的其他產品特性都會採用名稱是 defaultDatabaseStore 的 databaseStore 實例。下列範例是置換 defaultDatabaseStore 實例:
 <databaseStore id="defaultDatabaseStore" dataSourceRef="DB2DataSource" tablePrefix="MYTIMERS"/>
下列範例是將 defaultEJBPersistentTimerExecutor 實例配置成使用不同的 databaseStore 實例:
  <persistentExecutor id="defaultEJBPersistentTimerExecutor" taskStoreRef="MyDBStore"/>
  <databaseStore id="MyDBStore" dataSourceRef="DB2DataSource" tablePrefix="MYTIMERS">
    <authData user="user1" password="password1"/>
  </databaseStore>
啟用和停用執行持續性計時器作業

排定執行持續性 EJB 計時器作業的交易一旦確定之後,就會啟用執行其持續性 EJB 計時器作業。若要阻止執行持續性計時器作業,您可以將 enableTaskExecution 屬性值配置成 false,在此情況下,EJB 計時器服務仍會將持續性計時器作業寫入至資料庫,但不會執行它們。如果將值切換為 true,EJB 計時器服務就會開始執行先前排定的計時器,以及所排定的任何新計時器。

自訂持續儲存庫的輪詢(以尋找計時器作業)
一旦啟動,會起始輪詢一次持續儲存庫,以尋找先前排定的計時器作業。當排定作業時,會持續保存所排定的下次執行時間的相關資訊,並保留在記憶體中,如此就不需要進一步輪詢持續儲存庫。在很多情況下,這樣的行為是合宜的,但是未必全都一體適用。
  • 如果計時器作業與其他服務之間存在外部相依關係,起始輪詢可能太早進行,且計時器作業可能因它們所需的外部服務無法使用而失敗。如果發生此情況,可以使用起始輪詢延遲,讓起始輪詢延遲一段固定時間。
  • 如果排定了大量的 EJB 持續性計時器,可能耗用過多的記憶體。在此情況下,可以配置輪詢間隔,來定期輪詢持續儲存庫,以便在間隔時間內只尋找您想執行的計時器作業,直到下次輪詢為止。輪詢大小是進一步限制在每次的輪詢間隔中,可從資料庫讀取的計時器作業數目,如此可能使得某些作業較晚執行。
配置範例:
<persistentExecutor id="defaultEJBPersistentTimerExecutor" initialPollDelay="5m" pollInterval="10m" pollSize="200"/>
重試失敗和回復的持續性計時器作業

當持續性 EJB 計時器執行失敗,或被標示為回復時,就會立即重試一次。如果立即重試失敗,將以固定的間隔重試,直到成功為止。您可以在配置中指定重試限制,來限制重試次數。您也可以在配置中指定重試間隔,來控制重試的間隔時間。

配置範例:
  <persistentExecutor id="defaultEJBPersistentTimerExecutor" retryLimit="100" retryInterval="2m"/>

指示主題類型的圖示 參照主題



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwlp_ejbtime_options
檔名:rwlp_ejbtime_options.html