Sun Java System Application Server Enterprise Edition 8.1 2005Q2 高可用性管理指南

有狀態階段作業 Bean 容錯移轉

有狀態階段作業 Bean (SFSB) 包含用戶端特定的狀態。用戶端與有狀態階段作業 Bean 之間存在一對一關係。建立時,EJB 容器會為每個 SFSB 提供一個唯一的階段作業 ID,此 ID 將 SFSB 連結至用戶端。

在伺服器實例出現故障時,SFSB 的狀態可以儲存在持續性存放區中。SFSB 的狀態在其使用週期中預先定義的時間儲存於持續性存放區中。這稱為檢查點操作。如果啟用,通常會在 Bean 完成了任何作業事件之後 (即使該作業事件回復) 執行檢查點操作。

但是,如果 SFSB 參與了 Bean 管理的作業事件,則可能會在 Bean 方法執行到一半時確定該作業事件。因為 Bean 的狀態可能由於方法呼叫而處於過渡過程中,因此不是對 Bean 狀態進行檢查點操作的恰當時間。這種情況下,如果 Bean 在方法結束時不在其他作業事件的範圍內,EJB 容器會在相應方法結束時對 Bean 的狀態進行檢查點操作。如果 Bean 管理的作業事件使用多個方法,檢查點操作將延遲,直至後續方法結束時沒有使用中的作業事件。

SFSB 的狀態無需是作業事件,且可能做為非作業事件商務方法而進行了重大修改。如果某個 SFSB 出現這種情況,則您可以指定一系列檢查點方法,如指定進行檢查點操作方法中所述。

如果可分散 Web 應用程式參照 SFSB,且 Web 應用程式的階段作業容錯移轉,則 EJB 參照也將容錯移轉。

如果在 Application Server 實例停止時取消部署使用階段作業持續性的 SFSB,則可能不會清除持續性存放區中的階段作業資料。若要防止發生此情況,請在 Application Server 實例執行時取消部署 SFSB。

配置 EJB 容器的可用性

Procedure啟用 EJB 容器的可用性

  1. 選取 [EJB 容器可用性] 標籤。

  2. 核取 [可用性服務] 核取方塊。

    若要停用可用性,請取消核取此核取方塊。

  3. 請按照可用性設定中的說明變更其他設定

  4. 按一下 [儲存] 按鈕。

  5. 重新啟動伺服器實例。

等效的 asadmin 指令

若要啟用 EJB 容器的可用性,請使用 asadmin set 指令為配置設定以下三個特性:

例如,如果 config1 為配置名稱,則使用以下指令:

asadmin set --user admin --passwordfile password.txt --host localhost --port 4849config1.availability-service.ejb-container-availability .availability-enabled="true"

asadmin set --user admin --passwordfile password.txt --host localhost --port 4849config1.availability-service.ejb-container-availability .sfsb-persistence-type="file"

asadmin set --user admin --passwordfile password.txt --host localhost --port 4849config1.availability-service.ejb-container-availability .sfsb-ha-persistence-type="ha"

可用性設定

[可用性服務] 的 [EJB 容器可用性] 標籤可讓您變更以下可用性設定:

HA 持續性類型:為啟用了可用性的 SFSB 指定階段作業持續性和鈍化機制。允許的值包括 file (檔案系統) 和 ha (HADB)。對於需要階段作業持續性的生產環境,請使用預設值 ha

SFSB 持續性類型:為尚未啟用可用性的 SFSB 指定鈍化機制。允許的值包括 file (預設值) 和 ha

如果將任一持續性類型設定為 file,EJB 容器都將指定檔案系統位置,以儲存鈍化的階段作業 Bean 狀態。檔案系統的檢查點操作對於測試很有用,但不適用於生產環境。如需更多資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.1 2005Q2 管理指南」中的「配置儲存特性」

如果任何其他伺服器實例出現故障,HA 持續性會使伺服器實例的叢集可以回復 SFSB 狀態。HADB 也用做鈍化和啟動儲存。在需要 SFSB 狀態持續性的生產環境中使用此選項。如需更多資訊,請參閱 configure-ha-cluster(1)

SFSB 儲存池名稱:如果為獲得階段作業持續性而變更了用於連線 HADB 的 JDBC 資源,可以變更 SFSB 儲存池名稱。如需詳細資訊,請參閱 configure-ha-cluster(1)

停用可用性時配置 SFSB 階段作業儲存

如果停用了可用性,本機檔案系統將用於 SFSB 狀態鈍化,但不用於持續性。若要變更 SFSB 狀態的儲存位置,請變更 EJB 容器中的 [階段作業儲存位置] 設定。如需更多資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.1 2005Q2 管理指南」中的「配置儲存特性」

配置個別應用程式或 EJB 模組的可用性

部署期間,可以啟用個別應用程式或 EJB 模組的 SFSB 可用性:

配置個別 Bean 的可用性

若要啟用個別 SFSB 的可用性並選取進行檢查點操作方法,請使用 sun-ejb-jar.xml 部署.

若要啟用高可用性階段作業持續性,請在 ejb 元素中設定 availability-enabled="true"。若要控制 SFSB 快取的大小和運作方式,請使用以下元素:

如需有關 sun-ejb-jar.xml 的更多資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Developer’s Guide」中的「The sun-ejb-jar.xml File」


範例 8–1 啟用了可用性的 EJB 部署描述元範例

<sun-ejb-jar>
    ...
    <enterprise-beans>
        ...
        <ejb availability-enabled="true">
            <ejb-name>MySFSB</ejb-name>
        </ejb>
        ...
    </enterprise-beans>
</sun-ejb-jar>

指定進行檢查點操作方法

如果啟用,通常會在 Bean 完成了任意作業事件之後 (即使該作業事件回復) 執行檢查點操作。若要在導致 Bean 狀態重大修改之非作業事件商務方法結束時,指定額外選擇性的 SFSB 檢查點設定功能,請使用 sun-ejb-jar.xml 部署描述元檔案的 ejb 元素中的 checkpoint-at-end-of-method 元素

如果要在建立之後立即對 SFSB 的初始狀態進行檢查點操作,checkpoint-at-end-of-method 元素中的非作業事件方法可以是:


備註 –

如果 SFSB 未參與任何作業事件,並且沒有在 checkpoint-at-end-of-method 元素中明確指定 SFSB 的方法,則不會對 Bean 的狀態設定檢查點 (即使此 Bean 的 availability-enabled="true")。

為了取得更好的效能,請指定方法的子集。此方法應該完成對 Bean 的狀態做出重要修改的大量工作或結果。



範例 8–2 指定方法檢查點之 EJB 部署描述元範例

<sun-ejb-jar>
    ...
    <enterprise-beans>
        ...
        <ejb availability-enabled="true">
            <ejb-name>ShoppingCartEJB</ejb-name>
            <checkpoint-at-end-of-method>
                <method>
                    <method-name>addToCart</method-name>
                </method>
            </checkpoint-at-end-of-method>
        </ejb>
        ...
    </enterprise-beans>
</sun-ejb-jar>