組合以便可以共用階段作業資料

依預設,階段作業管理機能會根據 Servlet 2.3 以及更新版本的 API 規格,支援 Web 模組的階段作業範圍設定。 只有相同 Web 模組中的 Servlet 才能存取與特定階段作業相關聯的資料。 不過,您可以使用 IBMApplicationSession 物件或 IBM® 延伸規格 (共用階段作業環境定義) ,在 Web 模組範圍之外共用資料。

關於這項作業

IBMApplicationSession 物件是一個母項階段作業物件,可供 Web 模組的階段作業擷取,且可以在商業層次應用程式中的所有 Web 模組之間共用階段作業屬性。 商業層次應用程式的預設範圍是企業應用程式。 共用階段作業環境定義選項也會延伸階段作業屬性的範圍。 使用共用階段作業環境定義延伸,整個商業層次應用程式或預設企業應用程式只有一個階段作業物件。

如果您將共用階段作業用於商業層次應用程式,則放置在階段作業中之所有物件的類別檔必須存在於隔離的共用程式庫中,且在所有應用程式之間共用。

使用 IBMApplicationSession 方法的好處是每一個 Web 模組都可以維護自己的階段作業,並具有共用階段作業的參照。 換句話說,來自用戶端的多個要求 (每一個都指定唯一的 Web 應用程式) 會產生具有共用階段作業 ID 的多個階段作業。 您可以讓任何共用階段作業 ID 的階段作業失效,而不會影響其他階段作業。 如果另一個 Web 應用程式正在使用該階段作業 ID ,則來自用戶端的新要求會重複使用階段作業 ID。 在階段作業 ID 的所有階段作業都失效之後,如果沒有 Web 應用程式正在使用該階段作業 ID ,則來自用戶端的新要求不會重複使用階段作業 ID。

如果您要從舊版產品移轉應用程式,則 IBMApplicationSession 方法需要變更應用程式的應用程式邏輯。

限制: 如果要使用共用階段作業,您必須將商業層次應用程式內的所有應用程式安裝在給定伺服器上。 您無法依伺服器分割企業應用程式。 例如,當 BLA1 中的一個企業應用程式安裝在一部伺服器上,而 BLA1 中的第二個企業應用程式也安裝在另一部伺服器上時,您無法使用這個選項。 在這種分割安裝中,應用程式可能會使用分散式階段作業在 Web 模組之間共用階段作業屬性,但在不同 Web 模組中進行階段作業的並行存取時,會失去階段作業資料完整性。 它也會嚴格限制使用部分階段作業管理特性,例如 TIME_BASED_WRITES。

對於已啟用這個共用階段作業環境定義延伸的企業應用程式,單一企業應用程式內的多個 Web 模組會共用一個階段作業物件。 因此,會在不同的 Web 模組之間使用一個階段作業 ID。 忽略企業應用程式內 Web 模組上的階段作業管理配置。 如果在企業應用程式層次改寫階段作業管理,則會使用在企業應用程式上定義的階段作業管理配置。 否則,會使用 Web 儲存器上的階段作業管理配置。 如果在商業層次應用程式內使用多個企業應用程式,階段作業管理配置必須在商業層次應用程式內的所有應用程式和 Web 模組之間共用。

對於階段作業事件,會呼叫定義在商業層次應用程式或企業應用程式內所有 Web 模組中的 httpSession 接聽器。 不保證接聽器呼叫的順序。

請完成下列各項,以便在商業層次應用程式之間共用階段作業資料。

程序

  1. 請完成下列步驟,以在應用程式碼內使用 IBMApplicationSession 物件來共用階段作業資料。
    1. 擷取階段作業物件
      HttpSession session = request.getSession();
    2. 將此物件強制轉型為 IBMSession 物件並呼叫 getIBMApplicationSession 方法。
      IBMApplicationSession appSession = ((IBMSession)session).getIBMApplicationSession();
    3. 像一般階段作業物件一樣使用 appSession。
  2. 請執行下列動作,以使用「共用階段作業環境定義延伸」來共用階段作業資料。
    1. 啟動組合工具。
    2. 在組合工具中,用滑鼠右鍵按一下您要共用的應用程式 (EAR 檔) ,然後按一下 開啟工具> 部署描述子編輯器
    3. 在組合工具的應用程式部署描述子編輯器中,選取「 WebSphere® 延伸」之下的 共用階段作業環境定義 請確定放入階段作業中的屬性類別定義可供企業應用程式中的所有 Web 模組使用。
      共用階段作業環境定義未完全符合規格的需求。
    4. 儲存應用程式 (EAR) 檔案。
      在組合工具中,關閉應用程式部署描述子編輯器之後,請確認您要儲存對應用程式所做的變更。