WebSphere Extended Deployment V6.0.x     操作系统:

密集運算程式設計模型

密集運算的應用程式是指執行大量運算工作的應用程式,不適合傳統 Java 2 Platform Enterprise Edition (J2EE) 要求/回應參照範例。

以下是導致這些應用程式不適合傳統 J2EE 程式設計模型的一些性質:
  • 非同步提交和執行工作的需求。
  • 長期執行工作的需求。
  • 可由操作員和管理者管理及查看個別工作單元的需求。
WebSphere Extended Deployment 所提供的密集運算程式設計模型提供一個能因應這些需求的環境。密集運算程式設計模型是 以下列兩個基本概念為中心:
  1. 使用工作來非同步提交和管理工作。
  2. 非同步 Bean 程式設計模型的次要延伸規格,可支援長時間執行的工作。

此工作概念由所有長時間執行的應用程式共用,本文的其他章節有提供說明。 以下各節提供關於非同步 Bean 程式設計模型延伸規格的其他資訊。

密集運算工作步驟

如同所有長時間執行的工作,密集運算工作也分成多個工作步驟。就密集運算工作而言, 每一個工作步驟是以實作 com.ibm.websphere.ci.CIWork 介面的類別實例表示。 CIWork 介面從 WebSphere 非同步 Bean 程式設計模型和 JSR 237 延伸 commonj.Work 工作介面。 這些延伸規格由兩個方法組成,可讓您將工作中指定的工作步驟特定內容傳遞至 CIWork 物件。

請參閱 API 文件,以取得詳細資料。

若要瞭解非同步 Bean,請前往 WebSphere Application Server InfoCenter 的 使用非同步 Bean 區段。

控制器 Bean

控制器 Bean 是一種定義於密集運算應用程式部署描述子中的 Stateless Session Bean, 它允許執行環境控制應用程式的工作。這個 Stateless Session Bean 的實作是由 WebSphere 提供的。 應用程式唯一的責任就是將下列定義中顯示的 Stateless Session Bean 併入其中一個 Enterprise Bean 模組的部署描述子中。請注意:您只能對每一個密集運算應用程式定義一個控制器 Bean。 因為控制器 Bean 的實作是在 WebSphere 執行時期提供的,所以應用程式部署人員不應該在密 集運算應用程式部署期間要求部署 Enterprise Bean。
<session id="supply a suitable name here">
   <ejb-name>CIController</ejb-name>
   <home>com.ibm.ws.ci.CIControllerHome</home>
   <remote>com.ibm.ws.ci.CIController</remote>
   <ejb-class>com.ibm.ws.ci.CIControllerBean</ejb-class>
   <session-type>Stateless</session-type>
   <transaction-type>Bean</transaction-type>
   <resource-ref id="WorkManager_ResourceRef">
      <description>
         WorkManager that will be used to execute jobs.
      
      <res-ref-name>wm/CIWorkManager</res-ref-name>
      <res-type>commonj.work.WorkManager</res-type>
      <res-auth>Container</res-auth>
      <res-sharing-scope>Shareable</res-sharing-scope>
   

套裝密集運算應用程式

密集運算應用程式的邏輯(某些 CIWork 物件加上支援這些 CIWork 物件的必要類別)套裝在 J2EE 應用程式企業保存檔 (EAR) 的 Enterprise Bean 模組中。 請注意:Enterprise Bean 模組的部署描述子必須包含上面所示的 Stateless Session Bean 定義。 如果應用程式本身使用其他 Enterprise Bean 或資源,部署描述子中可能也會出現這些 Bean 和資源的定義。J2EE 開發工具(如 IBM Rational Application Developer)可用來開發和套裝密集運 算應用程式,其方式與建構含有 Enterprise Bean 模組和非同步 Bean 的 J2EE 應用程式相同。

密集運算應用程式的生命週期

密集運算應用程式由應用程式伺服器啟動,方式與啟動其他 J2EE 應用程式完全一樣。 如果應用程式定義了任何啟動 Bean,它們將會隨著應用程式伺服器啟動而執行。 當工作到達應用程式時,密集運算執行環境 (LREE.ear) 會呼叫應用程式的 EJB 模組部署描 述子中定義的 CIControllerBean Stateless Session Bean。這個 Stateless Session Bean 的 JNDI 名稱是在工作的 xJCL 中所指定。針對每一個工作步驟,CIControllerBean 可以執行下列操作:
  1. 利用 CIWork 類別的無引數建構子,將工作的步驟 xJCL 中類別名稱元素所指定應 用程式的 CIWork 物件實例化。
  2. 呼叫 CIWork 物件的 setProperties() 方法,來傳遞工作步驟的 xJCL 中所定義的任何內容。
  3. 查閱工作管理員定義的 Enterprise Bean 模組的部署描述子,並使用它來非同步呼叫 CIWork 物件的 run() 方法。

如果工作在 run() 方法傳回之前取消了,CIControllerBean 就會在個別執行緒 上呼叫 CIWork 物件的 release() 方法。長時間執行的應用程式之開發人員可以決定如何安排 release() 方法中的邏輯,以便立即傳回 run() 方法。在傳回 run() 方法之前, 工作將會保持在取消擱置狀態中。

如果工作沒有取消,且傳回 run() 方法而沒有擲出異常狀況,則會將工作視為已順利完成。 如果 run() 方法擲出了異常狀況,則會將工作標示為執行失敗。 一旦傳回 run() 方法(無論是正常情況或擲出異常狀況),就不會再對 CIWork 物件 有任何進一步呼叫,而且也會捨棄對此物件的所有參照。




概念主题    

使用条款 | 反馈

最近更新日期: Aug 14, 2006 2:02:32 PM EDT
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r0/index.jsp?topic=/com.ibm.websphere.xd.doc/info/scheduler/cschintensve.html

© Copyright IBM Corp. 2005, 2006. All Rights Reserved.
本信息中心基于 Eclipse 技术。(http://www.eclipse.org)