密集運算的應用程式是指執行大量運算工作的應用程式,不適合傳統 Java 2 Platform Enterprise Edition (J2EE) 要求/回應參照範例。
此工作概念由所有長時間執行的應用程式共用,本文的其他章節有提供說明。 以下各節提供關於非同步 Bean 程式設計模型延伸規格的其他資訊。
密集運算工作步驟
如同所有長時間執行的工作,密集運算工作也分成多個工作步驟。就密集運算工作而言, 每一個工作步驟是以實作 com.ibm.websphere.ci.CIWork 介面的類別實例表示。 CIWork 介面從 WebSphere 非同步 Bean 程式設計模型和 JSR 237 延伸 commonj.Work 工作介面。 這些延伸規格由兩個方法組成,可讓您將工作中指定的工作步驟特定內容傳遞至 CIWork 物件。
請參閱 API 文件,以取得詳細資料。
若要瞭解非同步 Bean,請前往 WebSphere Application Server InfoCenter 的 使用非同步 Bean 區段。
控制器 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 應用程式相同。
密集運算應用程式的生命週期
如果工作在 run() 方法傳回之前取消了,CIControllerBean 就會在個別執行緒 上呼叫 CIWork 物件的 release() 方法。長時間執行的應用程式之開發人員可以決定如何安排 release() 方法中的邏輯,以便立即傳回 run() 方法。在傳回 run() 方法之前, 工作將會保持在取消擱置狀態中。
如果工作沒有取消,且傳回 run() 方法而沒有擲出異常狀況,則會將工作視為已順利完成。 如果 run() 方法擲出了異常狀況,則會將工作標示為執行失敗。 一旦傳回 run() 方法(無論是正常情況或擲出異常狀況),就不會再對 CIWork 物件 有任何進一步呼叫,而且也會捨棄對此物件的所有參照。