程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> WebSphere >> WebSphere Application Server中現代化的基於Java的批處理(一)

WebSphere Application Server中現代化的基於Java的批處理(一)

編輯:WebSphere

介紹 Modern Batch 和計算密集型的編程模型

簡介

批處理程序是任何企業 IT 領域的一個傳統且不可或缺的組件。目前的批處理發展趨勢是將內部的 Java 技能應用於在線程序和批處理程序上,以確保:

最大限度地提高實現的重用。

更輕松的開發和維護,因為使用了相同的工具集。

企業標准和服務質量實施上的一致性。

IBM 開發的解決方案提供了一種具有凝聚力的批處理程序管理模式。IBM WebSphere Application Server 的 Modern Batch 功能(可用於 WebSphere Application Server V8、WebSphere Application Server V7.0 Feature Pack for Modern Batch 和 IBM WebSphere Extended Deployment Compute Grid V8.0 中)提供了一個批處理中間件框架,提供了:

容器管理的批處理作業執行:提供了 Java 批處理應用程序所需的結構和支持功能,幫助您避免 “自定義中間件陷阱”。

作業控制接口:一個 XML 文件,描述一個批處理步驟中使用的 Java 類文件和批處理作業中包含的步驟。

作業檢查點和重新啟動功能:能夠在記錄數量或時間的基礎上創建檢查點。這支持從一個已知的檢查點重新啟動一個作業。

通用批處理數據流 (BDS):包含將數據抽象為容易訪問的記錄格式的功能,使批處理編程能夠重點關注業務功能,而不是讀取和寫入數據的基本代碼。

擁有這樣一個框架,可為開發自定義批處理中間件提供一種不錯的替代方法,允許開發人員將精力集中在實現核心業務目標上。使用 Modern Batch,可以將批處理應用程序的開發精簡為編寫作業的業務邏輯。這種業務邏輯與 “管道” 代碼之間的關注點分離是批處理框架的一個重要優勢。它實現了批處理功能的一種更有效的模塊化,這支持更有效的重用,能夠將批處理公開為模塊化服務。

Modern Batch 支持兩種批處理編程模式:

計算密集型:適用於執行計算密集型工作,且不需要重新啟動功能的簡單作業。

事務批處理:適用於需要一個容器管理的檢查點和一種重新啟動機制的作業。如果因為計劃或未計劃的斷電而中斷,這支持批處理作業從上一個檢查點重新啟動。

本文分析計算密集型模型並提供一個示例實現,該實現使用了 IBM Rational Application Developer v8 中所提供的新功能。

計算密集型的編程模型

計算密集型的編程包含以下元素:

控制器 bean:一種無狀態的會話 bean,支持運行時環境控制應用程序的作業。此無狀態會話 bean (CIControllerBean) 的實現由應用服務器提供。

作業步驟實現類:作業步驟表示作業將執行的業務邏輯。它由一個實現 com.ibm.websphere.ci.CIWork 接口的類的實例表示。CIWork 接口包含以下方法:

run() 方法將在 CI 作業運行時執行。

getProperties() 和 setProperties() 方法用於通過來自客戶端的屬性獲取輸入值。

release() 方法在需要通過客戶端中斷正在執行過程中的作業時調用。

如果工作是長期的,而不是短期的,那麼 isDaemon() 方法會返回 “true”。

xJCL 文件:一個基於 XML 的配置文件,提交給作業計劃程序運行。作業計劃程序使用此文件中的信息確定作業運行的位置和時間、它的輸入和輸出。作業的 xJCL 定義不是批處理應用程序的一部分。

圖 1 顯示了計算密集型編程模型。(這是實際編程模型的一個簡化版本,實際的模型將在第 2 部分中詳細探討。)

圖 1. 計算密集型編程模型

要開發計算密集型作業,您需要:

定義 xJCL 文件。

創建實現 CIWork 接口的 Java 類,包含將對每個作業步驟執行的業務邏輯。

使用指向 com.ibm.ws.ci.CIControllerBean 的無狀態會話 bean 將 CIWork 適當地包裝為實現類。

在構建示例計算密集型作業之前,一定要先理解計算密集型應用程序在運行時期間的行為。總之,發生的事情是:應用服務器使用 xJCL 文件查找並調用控制器 bean。bean 讀取 xJCL 文件,對於 xJCL 中的每個作業步驟,bean 將執行以下操作:

使用 CIWork 類的無參數構造函數實例化應用程序 CIWork 對象(由作業步驟的 xJCL 中的類名稱元素指定)。

調用 CIWork 對象的 setProperties() 方法傳遞作業步驟的 xJCL 中定義的任何屬性。

查找在企業 bean 模塊的部署描述符中定義的工作管理器,使用它異步調用 CIWork 對象的 run() 方法。

有了對編程模型的這一理解之後,讓我們看看開發計算密集型應用程序的步驟。

示例業務場景

相關產品和版本

這裡提供的示例使用 Rational Application Developer V8.0 開發並部署在 WebSphere Application Server V8.0 上。Rational Software Architect for WebSphere V8 及更新版本也提供了開發批處理程序的工具支持。WebSphere Application Server V7.0.0.11 及更新版本通過 Modern Batch 功能包提供了對 Modern Batch 的運行時支持,Modern Batch 在 V8 中以一個集成的組件的形式提供。

此示例場景中的企業是一個在不同州擁有許多分支的金融組織。該組織的客戶向分支機構提交應用程序,以便進行相應處理。計算密集型應用程序示例將生成一個報告,總結來自每個州的應用程序數量,以及該組織的其他指標。

要開發此應用程序,請執行以下步驟:

在 Rational Application Developer 中,導航到 File > New > Batch Project,創建一個名為 dWSampleBatch 的新批處理項目。完成此操作之後單擊 Finish(參見圖 2)。這還會創建一個 EJB 項目,它擁有無狀態會話 bean 和 EAR 項目。

圖 2. 創建一個新批處理項目

現在您已設置了項目,您需要創建此批處理項目的作業定義。創建批處理作業定義,方法是右鍵單擊您剛創建的新批處理項目中的 xJCL 文件夾,然後選擇 New > Batch Job(參見圖 3)。

圖 3. 創建新批處理作業

選擇 Compute Intensive 作為作業類型並輸入 SummaryReportJob 作為作業名稱(參見圖 4)。然後單擊 Next。

圖 4. 創建 xJCL 文件

在 Batch Step Creation 面板上,輸入 SingleStep 作為步驟的名稱,選擇默認的預定義 CI Work 作為作業步驟模式(參見圖 5)。CI Work 模式可確保作業步驟類實現 CIWork 接口,這正是計算密集型編程模型所需要的。

圖 5. 創建批處理步驟

現在,您需要創建 CIWork 接口的實現類。創建 SummaryReport 類,它將實現 CIWork 並擁有業務需求(在本例中是創建摘要報告)的邏輯。單擊 Create Class 按鈕創建實現類(參見圖 5)。輸入圖 6 中所示的詳細信息並單擊 Finish。            

圖 6. 創建批處理步驟實現類

您將返回到 Batch Step Creation 面板。下一步是創建批處理作業程序 SummaryReport.java 的參數。創建下面列出的兩個必需屬性,方法是選擇 Add(針對每個屬性)並選擇 Finish(參見圖 7)。

InputFileLocation:包含要處理的數據的輸入文件位置。

OutputFileLocation:包含輸出摘要報告文件的位置。

Batch Job 向導操作結束並在 xJCL 文件夾中創建了 SummaryReportJob.xml 文件(在第 3 步中指定)。

圖 7. 添加必需的屬性

上一步中創建的必要屬性既可使用值硬編碼,也可在運行時通過 xJCL 文件傳遞。對於本示例,它們將通過 xJCL 文件傳遞。要實現此目的,請雙擊 xJCL 文件夾下的 SummaryReportJob.xml 文件將其打開。這會在 xJCL 編輯器中打開 XML 作業定義文件,如圖 8 中所示。

圖 8. 編輯 xJCL 文件

您可能希望在運行時通過 xJCL 傳遞文件位置的值。為此,可使用替換屬性 (Substitution Properties),這些屬性使您能夠創建可在 xJCL 中使用的默認的 “名稱-值" 對。要創建替換屬性,可以單擊 Add,然後在 Add Item 對話框中選擇 Substitution Properties,單擊 OK(參見圖 9)。

圖 9. 添加替換屬性

在 Substitution Properties 對話框中添加下面列出的屬性,單擊 Finish(參見圖 10)。

inputFile:分配 C:\\InputFile.txt 的默認值

outputFile:分配 C:\\OutputFile.txt 的默認值

圖 10. 添加替換屬性

在 xJCL 編輯器中,使用相應的替換屬性更新必需的屬性值(參見圖 11):

將 InputFileLocation 替換為 ${inputFile}

將 OutputFileLocation 替換為 ${outputFile}

   這樣,您現在就已將作業定義中定義的必需屬性與替換屬性相鏈接。這允許您在運行時傳遞實際文件位置。

圖 11. 更新必需的屬性

您可能已經注意到,Rational 工具也生成了 EJB 和 EAR 項目。檢查 EJB 項目,確保資源引用已正確設置為 CIWorkManager。要在 EJB 綁定編輯器中執行此操作,可雙擊 EJB 項目下的 ibm-ejb-jar-bnd.xml 文件(參見圖 12)。批處理作業現在已完成配置。

圖 12. 驗證資源引用

SummaryReport.java 實現了讀取數據文件 (InputFile.txt)、准備報告、然後將其寫入輸出文件 (OutputFile.txt) 的業務邏輯。結合使用 SummaryReport.java 文件和本文中包含的文件(可從 下載 部分獲得)實現此業務邏輯。另外,將 InputFile.txt 文件放在為輸入文件位置選擇的目錄下,以便 Summary 程序可以讀取它。您現在可以部署和測試批處理應用程序了。

運行示例

部署選項

在這裡,示例應用程序將從 Rational Application Developer 部署和運行。在第 2 部分中,在探討事務批處理時,我們將演示應用服務器上的部署,以及從各種接口(比如作業管理控制台、EJB 客戶端、Web 服務客戶端或命令行)對作業的調用。

要從 Rational Application Developer 運行示例,請執行以下步驟:

右鍵單擊 dWSampleBatchEAR 並選擇 Run As > Run on Server。選擇您希望使用的服務器並單擊 Finish(參見圖 13)。

圖 13. 在服務器上運行批處理應用程序

要將 xJCL 提交到服務器運行時,可以右鍵單擊 SummaryReportJob.xml 文件並選擇 Run As > Modern Batch Job(參見圖 14)。

圖 14. 提交 xJCL 作業

如果在此服務器上啟用了安全性,可以勾選此復選框,輸入一個有效的用戶 ID 和密碼。如果已將 inputFile.txt 文件放在 C:\\InputFile.txt 以外的不同位置,可以使用新值更新該位置。單擊 Run。該作業被提交到服務器運行時,並在 Modern Batch Job Management Console 中打開了作業日志文件(參見圖 16)。                

圖 15. 修改替換屬性

圖 16. 作業日志

要查看作業運行的日志,可以訪問 Modern Batch Job Management Console,方法是右鍵單擊 Server 視圖中的服務器運行時並選擇 Modern Batch Job Management Console,或使用 URL:http://<hostname>:<wc_defaulthost port>/jmc/console.jsp。該控制台用於管理批處理作業並特意與 WebSphere Application Server 管理控制台相分離,因為操作批處理環境和管理中間件基礎架構是兩件非常不同的事。圖 17 顯示了 Modern Batch Job Management Console,它提供了許多管理作業的功能。

圖 17. Modern Batch Job Management Console

當運行完成時,提交的作業應該以文件的形式在 C:\\outputFile.txt 生成一個摘要報告,對測試結果進行總結。

結束語

WebSphere Application Server 的 Modern Batch 功能提供了一個健壯的批處理框架,使您能夠以最少的工作開發批處理程序。作為 WebSphere Application Server 的一部分,WebSphere 產品所提供的可靠性已融入到解決方案中。它提供了一個基於 Java 的簡單編程模型,使您能夠利用 Java 技能構建值得信賴的批處理程序,無需重新發明該框架。它還為 IT 經理提供了將作業轉移到一個托管的 WebSphere Application Server 環境的機會。

第 2 部分將探討事務批處理編程模型,並使用另一個實用的示例進行展示。

下載

描述 名字 大小 下載方法 代碼樣例 1203_narain_attachment.zip 642 KB HTTP
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved