5. Session複製
5.1. HTTP會話狀態複製介紹
5.
5.1.
5.1.1. 對JSP和Servlet提供集群支持
WebLogic服務器通過複製HTTP會話狀態,對JSP和Servlet提供集群支持。
5.1.2. 實現方式
內存複製
JDBC複製
文件系統複製
本文只做了”內存複製”的配置。
5.1.3. Session複製要求條件
Session必須序列化
為了支持in-memory http session複製,所有的servlet和jsp會話數據必須可序列化,實現java.io.Serializable接口。
用setAttribute 修改 Session 狀態
在實現了javax.servlet.http.HttpSession的http servlet中,用HttpSession.setAttribute代替putValue方法去修改session 對象。putValue方法不建議用,同樣用removeAttribute代替removeValue去刪除session對象。
避免大的session對象
因為往session中存放的數據比較大時,系統的響應速度明顯變慢,有時會出現內存溢出的情況。
框架的使用
在特定的框架集(frameset)中,確保只有一個框架(frame)創建和修改會話數據;必須確保只在第一個框架集的一個框架中創建會話,其他框架集訪問該session。
5.2. Weblogic配置要求
5.2.
5.2.1. 機器
WebLogic服務器中,機器名用來指明一個受管服務器運行在一個特定的硬件上。機器定義是WebLogic選擇另一個服務器作為它的會話信息備份時的一個考量因素。
5.2.2. 複製組
複製組是集群中相關服務器的邏輯組,WLS允許你使用複製組,決定在哪裡放置備份對象。WLS嘗試以下方式進行session複製:
• 如果配置過,發送備份對象給預定義次要複製組
• 發送備份對象給不同機器
• 避免發送備份對象給同一個複製組中的服務器
5.2.3. 分級服務器
WebLogic服務器對集群中的服務器分級,以決定哪個服務器作為備份:
圖66
5.2.4. weblogic.xml部署描述配置
會話持久性通過weblogic.xml部署描述符文件中的<session-descriptor>元素配置的,每種持久性方法都有自己的配置參數集。
5.3.
內存複製方式
5.3.
5.3.1. 服務器和會話對象
WLS可以複製HttpSession對象和
有狀態會話EJB,會話對象僅存在兩
台服務器上,稱作主要服務器和次
要服務器。次要服務器由複製組和機
器定義決定,主要對象創建後,次要
對象馬上被創建。如右圖所示
圖67
主要服務器失敗,使得備份對象成為主要對象,如下圖。

圖68
5.3.2. 複製組故障接管
圖69
5.3.3. 內存複製的要求
來自同一個客戶端的後續請求必須訪問同一個主要對象
為了使用HTTP會話狀態內存複製,客戶端必須使用下面方法之一訪問集群:
• 負載均衡硬件(WLS知曉)
• Web服務器集合,或單個Web服務器,帶有WebLogic代理插件(配置相同)
• 配置有HTTPClusterServlet的WebLogic服務器(本文採用方式)
5.3.4. 配置內存複製
配置代理服務器(如果適用)
配置複製組和/或機器(可選)
在weblogic.xml部署描述符中指定持久類型
<persistent-store-type>replicated_if_clustered</persistent-store-type>
以下文章點擊率最高
Loading…