1. 程式人生 > >Web---Listener---鈍化與活化

Web---Listener---鈍化與活化

HttpSessionActivationListener

  • 實現此介面的JavaBean,可以感知自己被活化(從硬碟到記憶體)鈍化(從記憶體到硬碟)的過程。
  • 如果需要同時儲存Session中的JavaBeanJavaBean也要實現Serializable序列化介面。
  • 實現此介面的JavaBeanHttpSessionBindingListener一樣,不必配置到web.xml中。

要實現此功能,必須要先配置以下資訊:

<Context path="/myProj" docBase="D:/programfiles/projects/MyProj/WebRoot">
<!-- 配置會話的持久化 -->
<Manager className="org.apache.catalina.session.PersistentManager"
 saveOnRestart="true"
 maxActiveSessions="1"
 minIdleSwap="120"
 maxIdleSwap="180"
 maxIdleBackup="5"
 maxInactiveInterval="1800">
<Store className="org.apache.catalina.session.FileStore"
       directory=“儲存目錄">
</Store>
</Manager>
</Context>

本次測試執行環境是Tomcat8.5,該版本不需要配置,鈍化的檔案就在當前專案的執行目錄中,當然要修改位置可以通過上面的模板進行配置。

運用場景

當專案已經投入運營時,遇到維護時需要重啟伺服器,而有些資訊是儲存在使用者的session中,如果不進行鈍化使用者的一些資訊存在丟失的可能。

測試過程

  1. 多次開啟新的瀏覽器視窗,並記錄SESSIONID
  2. 使用shutdown.bat關閉tomcat應用。
  3. 觀察指定的目錄下是否存在*.session檔案。
  4. 觀察是否為關閉tomcat之前的同一個Session
  5. 一般情況下,PersistentManager持久化Session
    Cookie共同使用。
  6. HttpSessionActivationListener只做為監聽類,監聽自己是否鈍化或是活化。