配置 Liberty 的階段作業持續性
當必須跨越伺服器重新啟動或非預期的伺服器故障來維護階段作業資料時,您可以配置 Liberty,將階段作業資料持續保存在資料庫中。這個配置可讓多部伺服器共用相同的階段作業資料,在失效接手時,可以回復階段作業資料。
關於這項作業
如果要在 Liberty 中配置一或多部伺服器,將階段作業資料持續保存在資料庫中,請完成下列步驟。
程序
- 定義一個共用的階段作業管理配置,供您在所有伺服器之間重複使用。
作為一項最低需求,您必須完成下列步驟:
- 啟用 sessionDatabase-1.0 特性。
- 定義一個資料來源:
<dataSource id="SessionDS" ... />
- 參照階段作業資料庫配置中的資料來源。
<httpSessionDatabase id="SessionDB" dataSourceRef="SessionDS" ... />
- 參照階段作業管理配置中的持續性儲存位置。
<httpSession storageRef="SessionDB" ... />
註: httpSession 元素的 storageRef 屬性和 httpSessionDatabase 元素的 id 屬性不是必要的。 如果啟用 sessionDatabase-1.0 特性,且 httpSessionDatabase 元素參照了有效的資料來源,即使未設定 storageRef 屬性,也會啟用階段作業持續性。請參閱資料庫階段作業持續性,以取得 httpSession 和 httpSessionDatabase 元素的詳細資料。
例如,您可以依照下列方式,建立一個名稱為 ${shared.config.dir}/httpSessionPersistence.xml 的檔案:<server description="Demonstrates HTTP Session Persistence Configuration"> <featureManager> <feature>sessionDatabase-1.0</feature> <feature>servlet-3.0</feature> </featureManager> <httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="${httpPort}"> <tcpOptions soReuseAddr="true"/> </httpEndpoint> <fileset id="DerbyFiles" includes="*.jar" dir="${shared.resource.dir}/derby/client"/> <library id="DerbyLib" filesetRef="DerbyFiles"/> <jdbcDriver id="DerbyDriver" libraryRef="DerbyLib"/> <dataSource id="SessionDS" jdbcDriverRef="DerbyDriver"> <properties.derby.client user="user1" password="password1" databaseName="${shared.resource.dir}/databases/SessionDB" createDatabase="create"/> </dataSource> <httpSessionDatabase id="SessionDB" dataSourceRef="SessionDS"/> <httpSession storageRef="SessionDB" cloneId="${cloneId}"/> <application id="test" name="test" type="ear" location="${shared.app.dir}/test.ear"/> </server>
註: 當配置多部伺服器將階段作業資料持續保存在相同的資料庫時,這些伺服器必須共用相同的階段作業管理配置。 不支援任何其他配置。 比方說,不可能一部伺服器使用多列綱目,另一部伺服器卻使用單列綱目。HTTP 伺服器外掛程式使用插入至回應/要求標頭的複本 ID,來維護要求之間的階段作業親緣性。一般而言,複本 ID 維持不變,但在 Liberty 中,會在您第一次啟動伺服器時產生複本 ID,而如果您使用 --clean 選項來啟動伺服器,則會重新產生複本 ID。如果用於正式作業,手動指派複本 ID,可確保該 ID 穩定,且該要求親緣性能維護正確。每一部伺服器的複本 ID 必須是唯一的,長度可為 8 到 9 個英數字元,並且是在步驟 3 中指定。
- 將共用的階段作業管理配置併入您的每部伺服器中。
例如,依照下列方式,針對名稱為 s1 和 s2 的伺服器實例,建立兩個 server.xml 檔:
- ${wlp.user.dir}/servers/s1/server.xml
- ${wlp.user.dir}/servers/s2/server.xml
<server description="Example Server"> <include location="${shared.config.dir}/httpSessionPersistence.xml"/> </server>
請參閱 在配置檔中使用 include 元素。
- 在每部伺服器的 bootstrap.properties 檔中,指定唯一變數。
- ${wlp.user.dir}/servers/s1/bootstrap.properties
httpPort=9081 cloneId=s1
- ${wlp.user.dir}/servers/s2/bootstrap.properties
httpPort=9082 cloneId=s2
- ${wlp.user.dir}/servers/s1/bootstrap.properties
- 在啟動伺服器之前,建立一份用於持續保存階段作業的表格。
- 如果您想要變更預設列大小、表格名稱或表格空間名稱,請參閱資料庫階段作業持續性,以取得 httpSessionDatabase 元素的詳細資料。
如果您的伺服器安裝在某個分散式作業系統中,就不需要其他動作。 伺服器會自動建立表格。
- 如果您的伺服器使用 DB2® 來持續保存階段作業,您可以增加頁面大小,使大量資料寫入資料庫的效能最佳化。
- 將管理 Liberty 伺服器之所有機器的系統時鐘同步化。如果系統時鐘未同步,可能會過早發生階段作業失效
- 選擇性的: 必要的話,請在 Liberty 中,將 HTTP 階段作業和安全整合起來。 依預設,在啟用安全的受保護資源內建立及存取階段作業之後,只有這個階段作業的原始擁有者能夠存取它。 依預設,會啟用階段作業安全(安全整合)。
- 選擇性的: 必要的話,安裝及配置 Web 伺服器外掛程式,將要求轉遞給您配置的每一部伺服器。 只有在外掛程式配置指定的複本 ID 符合伺服器配置所定義的複本 ID 時,才會維護階段作業親緣性。

檔名:twlp_admin_session_persistence.html