使用 TaskNameManager 介面

TaskNameManager 介面可讓您以程式設計方式設定現行作業名稱。它支援置換與執行緒相關聯的現行作業,也支援以原始作業重設現行作業。

關於這項作業

除了在已選取「5.x 相容模式」屬性的伺服器上執行的 J2EE 1.3 應用程式以外,此介面無法在針對儲存器管理交易或儲存器管理 ActivitySessions 所配置的 Enterprise JavaBeans 內使用,因為工作單元只有在起始的當時才能與作業相關聯。 因此,必須在工作單元開始之前進行呼叫來設定作業名稱。 工作單元開始之後就無法命名。在儲存器管理工作單元執行期間呼叫此介面會完全被忽略。

應用程式設定檔作業不支援查詢在執行時期運作的作業。 相反地,應用程式會與宣告配置為應用程式管理作業的邏輯作業名稱互動。 邏輯參照可讓您在不必重新編譯應用程式的情況下,變更實際作業名稱。

請儘可能避免以程式設計方式設定作業。宣告式方法可以產生更具可攜性的功能,不需要重新開發和重新編譯,就能輕易調整。

註: 如果您在「應用程式設定檔服務」的主控台頁面選取「5.x 相容模式」屬性,則 J2EE 1.3 應用程式上配置的作業不一定與工作單元相關聯,而且可以任意套用或置換。 這不是建議的作業模式,可能會導致資料庫存取期間發生非預期的死鎖。在「應用程式設定檔作業 5.x 相容模式」下執行的應用程式與不在相容模式下執行的應用程式之間,不會透過要求傳遞作業。

如果要讓 6.0 版用戶端與「應用程式設定檔作業 5.x 相容模式」下執行的應用程式互動,您必須在用戶端程序中將 appprofileCompatibility 系統內容設定為 true。 作法是在呼叫 launchClient 指令時指定 -CCDappprofileCompatibility=true 選項。

程序

  1. 配置應用程式管理的作業。 應用程式設定檔作業要求,任何要以程式設計方式設定的作業都必須宣告作業名稱參照。 作業名稱參照引進一個間接層次,只要重組就能調整執行時期設定的實際作業,而不需要重新編碼或重新編譯。 只要試圖設定未宣告為作業參照的作業名稱,就會導致發出異常狀況。 在設定作業名稱時,如果有一個工作單元已開始,則現有的工作單元不會與作業名稱相關聯。 只有在設定作業名稱之後才開始的工作單元,才會與作業相關聯。
    如下列主題所述,配置應用程式管理的作業。如果要完成這些作業,請參閱組合工具資訊中心:
    • 配置適用於 Web 元件的應用程式管理作業。
    • 配置適用於應用程式用戶端的應用程式管理作業。
    • 配置適用於 Enterprise JavaBeans 的應用程式管理作業。
  2. 在 TaskNameManager 介面上執行 Java 命名和目錄介面 (JNDI) 查閱:
    InitialContext ic = new InitialContext();
    TaskNameManager tnManager = ic.lookup
    ("java:comp/websphere/AppProfile/TaskNameManager");
    如果應用程式設定檔作業服務已停用,TaskNameManager 介面不會連結到名稱空間。
  3. 設定作業名稱:
    try {
    tnManager.setTaskName("updateAccount");
    }
    catch (IllegalTaskNameException e) {
    // 作業名稱參照未配置。處理錯誤。
    }
    // . . .
    //
    傳給 setTaskName() 方法的名稱(此範例中的 "updateAccount"),實際上是您在步驟 1 配置的作業名稱參照。
  4. 開始 UserTransaction
    註: 如果使用的 J2EE 1.3 應用程式已設定「5.x 相容模式」,則步驟 3 設定的作業名稱現在為作用中的作業名稱,您可以忽略此步驟。
    如果使用 J2EE 應用程式且未設定相容模式,或使用 J2EE 1.4 應用程式,您必須開始交易,作業名稱才會變成作用中。 作業名稱只能與交易相關聯。此外,它會在交易開始時與交易相關聯,而且在交易的存在期間,作業名稱都與該交易相關聯。 因此,前一個步驟設定的作業名稱此時不在作用中。您必須開始 UserTransaction,如下列程式碼片段所示:
    try{
        InitialContext initCtx = new InitialContext();
        userTran = (UserTransaction) initCtx.lookup("java:comp/UserTransaction");
        userTran.begin();
    }
    catch (Exception e) {
    }         
    // . . .
    //
    請注意 TaskNameManager 介面的 resetTaskName() 方法。 除非由 J2EE 1.3 應用程式呼叫,而且執行此應用程式的伺服器已在「應用程式設定檔服務」主控台頁面選取「5.x 相容模式」屬性,否則重設作業名稱沒有作用。 這不是建議的作業模式,可能會導致資料庫存取期間發生非預期的死鎖。resetTask( ) 呼叫只有在設定「5.x 相容模式」時才應由 J2EE 1.3 應用程式使用,以復原任何 setTaskName() 方法作業的效果,並重新建立元件開始執行當時存在的任何作業名稱。 如果未呼叫 setTaskName() 方法,則 resetTaskName() 方法沒有作用。

指出主題類型的圖示 作業主題



時間戳記圖示 前次更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tapp_usetasknamemanager
檔名:tapp_usetasknamemanager.html