長時間執行的執行環境 (LREE) 使用核對點演算法來決定何時對呼叫批次步驟的廣域交易進行確定。 這些演算法透過 xJCL 定義套用到批次工作上。 xJCL 中指定的核對點演算法內容允許針對批次步驟自訂核對點行為,如交易逾時值和核對點間隔。 WebSphere Extended Deployment 提供時間型和記錄型兩種核對點演算法,並且定義服務提供 者介面 (SPI) 來建置其他自訂核對點演算法。
在 processJobStep 方法的每一個批次步驟疊代上,LREE 都會 查閱套用到該步驟的核對點演算法,以決定是否應確定廣域交易。核對點演算法的回呼方法可讓 LREE 在確定或啟動廣域交易時 通知演算法。這可讓演算法追蹤廣域交易的生命週期。在 processJobStep 方法的每一個疊代上, LREE 會在演算法上呼叫 ShouldCheckpointBeExecuted 回呼方法,以決定是否應確 定交易及演算法是否透過這個方法來控制核對點間隔。
請查看位於 Infocenter Reference 區段中核對點演算法 SPI 的批次 API,以取得可用來建 立自訂核對點演算法的核對點演算法 SPI。類別名稱是 com.ibm.wsspi.batch.CheckpointPolicyAlgorithm。
本產品提供兩種核對點演算法;時間型演算法和記錄型演算法。以下各節提供這兩種演算法的說明。
<checkpoint-algorithm name="timebased"> <classname>com.ibm.wsspi.batch.checkpointalgorithms.timebased</classname> <props> <prop name="interval" value="15" /> <prop name="TransactionTimeOut" value="30" /> </props> </checkpoint-algorithm>
上述範例中 interval 和 TransactionTimeOut 內容的單位以秒表示。
記錄型核對點演算法可在批次步驟之 processJobStep 方法的指定疊代數上確定廣域交易。 processJobStep 方法的每一個呼叫 被當成重複一個記錄來處理。請注意,processJobStep 可從每 個呼叫的批次資料串流中擷取多個記錄,但對這個核對點演算法而言,一個記錄就等同於對 processJobStep 的一個呼叫。
<checkpoint-algorithm name="recordbased"> <classname>com.ibm.wsspi.batch.checkpointalgorithms.recordbased</classname> <props> <prop name="recordcount" value="1000" /> <prop name="TransactionTimeout" value="60" /> </props> </checkpoint-algorithm>
上述範例中 TransactionTimeOut 內容的單位以秒表示。
如果未在 xJCL 中指定, 預設交易逾時值是 60 秒,而預設記錄數是 10000。
核對點演算法透過 xJCL 套用到批次工作上。 您可以在 xJCL 中宣告多個核對點演算法,並且對每個批次步驟套用不同的演算法。 不可以將多個核對點演算法同時套用到一個批次步驟上。
以下是如何套用 xJCL 中核對點演算法的範例:
<job name="PostingsSampleEar"> <checkpoint-algorithm name="timebased"> <classname>com.ibm.wsspi.batch.checkpointalgorithms.timebased</classname> <props> <prop name="interval" value="15" /> <prop name=" TransactionTimeOut" value="30" /> </props> </checkpoint-algorithm> <checkpoint-algorithm name="recordbased"> <classname>com.ibm.wsspi.batch.checkpointalgorithms.recordbased</classname> <props> <prop name="recordcount" value="1000" /> <prop name="TransactionTimeout" value="60" /> </props> </checkpoint-algorithm> <job-step name="Step1"> <checkpoint-algorithm-ref name="timebased" /> </job-step> <job-step name="Step2"> <checkpoint-algorithm-ref name="recordbased" /> </job-step> </job>