Application Server 經由 HTTP 階段作業資料和有狀態階段作業 Bean (SFSB) 階段作業資料的容錯移轉功能,提供高可用性階段作業持續性。容錯移轉表示在伺服器實例或硬體出現故障時,其他伺服器實例接管分散式階段作業。
在滿足以下條件時,分散式階段作業可在多個 Sun Java System Application Server 實例中執行:
每一個伺服器實例都能存取相同的階段作業狀態資料。Application Server 為 HTTP 階段作業及有狀態的階段作業 Bean 資料提供了下列類型的高可用性儲存裝置:
叢集內其他伺服器上的記憶體中複製。預設會使用叢集設定檔啟用記憶體中複製。
如需使用記憶體中複製功能,需要啟用群組管理服務 (GMS)。如需有關 GMS 的更多資訊,請參閱群組管理服務。
如果叢集中的各伺服器實例位於不同機器上,請確定符合下列必要條件:
為了確保 GMS 和記憶體中複寫均能正確運作,各機器必須位於相同的子網路。
為了確保記憶體中複製正確運作,必須儘可能使叢集中所有機器的系統時鐘同步。
高可用性資料庫 (HADB)。如需有關如何啟用此資料庫的資訊,請參閱 configure-ha-cluster(1)。
Sun Java System Application Server 的 Application Server 獨立發行版本 隨附了 HADB 軟體。如需有關 Sun Java System Application Server 的可用發行軟體資訊,請參閱「Sun Java System Application Server 9.1 Installation Guide」中的「Distribution Types and Their Components」。只有 企業 設定檔才提供 HADB 功能。如需有關設定檔的更多資訊,請參閱 「Sun Java System Application Server 9.1 管理指南」中的「用法設定檔」。
每個伺服器實例均部署相同的可分散 Web 應用程式。web.xml 部署描述元檔案的 web-app 元素必須包含 distributable 元素。
Web 應用程式使用高可用性階段作業持續性。如果將不可分散的 Web 應用程式配置為使用高可用性階段作業持續性,伺服器會向記錄檔寫入錯誤。
必須使用 deploy 或 deploydir 指令 (--availabilityenabled 選項設定為 true) 部署 Web 應用程式。如需有關這些指令的更多資訊,請參閱 deploy(1) 和 deploydir(1)。
階段作業容錯移轉時,對開啟的檔案或網路連線的任何參照都會遺失。編碼應用程式時必須牢記此限制。
僅可以將某些物件連結至支援容錯移轉的分散式階段作業。與 Servlet 2.4 規格相反,如果不支援容錯移轉的物件類型連結至分散式階段作業,Sun Java System Application Server 不會丟出 IllegalArgumentException。
可以將以下物件連結至支援容錯移轉的分散式階段作業:
所有 EJB 元件的本地主機參照和物件參照。
並置的無狀態作業階段、有狀態作業階段或實體 Bean 參照。
分散式無狀態作業階段、有狀態作業階段或實體 Bean 參照。
InitialContext 和 java:comp/env 的 JNDI 環境。
UserTransaction 物件。但是,如果出現故障的實例從未重新啟動,則任何就緒的全域作業事件都將遺失,且可能無法正確回復或確定。
可串列化 Java 類型。
無法將以下物件類型連結至支援容錯移轉的階段作業:
JDBC DataSource
Java Message Service (JMS) ConnectionFactory 和 Destination 物件
JavaMail™ 階段作業
連線工廠
受管理的物件
Web 服務參照
通常,對於這些物件,容錯移轉不可用。但是,容錯移轉可能在某些情況下可用,例如,如果物件是可串列化的。