1. 程式人生 > >session的活化與鈍化 (轉)

session的活化與鈍化 (轉)

session的活化與鈍化就是當用戶訪問時網站異常,不能丟掉session,所有也必須採用檔案儲存;和之前那個統計網站訪問量一樣的原理。

 class Person implements必須實現這兩個介面,實現session活化和鈍化的要求

活化:從硬碟上讀取到記憶體中

純化:從記憶體中寫到硬碟上

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

import java.io.Serializable;  
    import javax.servlet.http.HttpSessionActivationListener;  
    import javax.servlet.http.HttpSessionEvent;  
    public class Person implements HttpSessionActivationListener,Serializable{  
        private static final long serialVersionUID = 1L;  
        private String name;  
        public Person(String name) {  
            this.name = name;  
        }  
        @Override  
        public void sessionWillPassivate(HttpSessionEvent se) {  
            System.out.println("一個Person物件儲存到硬碟了...");  
        }  
      
        @Override  
        public void sessionDidActivate(HttpSessionEvent se) {  
            System.out.println("一個Person物件從硬碟讀取出來了...");  
        }  
      
        @Override  
        public String toString() {  
            return "Person [name=" + name + "]";  
        }  
    }

這個實現之後都不算什麼,還需要配置檔案。

配置檔案可以寫在tomcat的目錄裡面conf---》server.xml裡面配置,但是裡面配置會修改平臺,

所以不建議使用。另一種方法:我們在conf----》Catalina------》localhost------》自定義一個xml檔案,裡面內容:

<Context path="/sessionActivation" docBase="E:/MyEclipse10_workspace/sessionActivation/WebRoot">  
  
  <Manager className="org.apache.catalina.session.PersistentManager"   
    saveOnRestart="true" maxActiveSessions="1">  
     <Store className="org.apache.catalina.session.FileStore" directory="d:/a">  
     </Store>  
  </Manager>  
  
</Context>  
  
  
<!--  以下是對上面的解釋    -->  
<!-- path為專案的目錄   docbase 為myeclipse目錄  
    className   不能變   
    saveOnRestart ="true"  能夠進行儲存  
    maxActiveSessions="n"  n為最大的session數量  
      
-->

這樣就可以實現session的活化了。

自己總結:

 伺服器重啟使用者session資訊儲存和恢復(伺服器維護需要) httpsessionActivationlistener  活化(sessiondidactivate)和鈍化sessionWillpassivate public class person implements  httpsessionactivationlistener,serviliziable(可序列化,永久儲存){ 活化和鈍化方法《主要的還是xml檔案的配置》 } WEB中監聽者的型別:ServletContextListener(最大的) HttpSessionListener(session建立能訪問,銷燬)(onlineweb) 活化和鈍化需要配置tomcat伺服器 (1,servce.xml---2,work catalina   自定義.xml檔案) 配置路徑---D:\javaSoft\apache-tomcat-7.0.30\conf\Catalina\localhost 需要寫一個xml檔案,

讓伺服器啟動的時候讀取或者配置server.xml(   <Host name="localhost"  appBase="webapps")改平臺 自定義xml檔案:(不用釋出)sess.xml 老師寫的 <context path="/專案名" docbase=" webroot右鍵+location《 E:\javaEcilpose\onlineWeb\WebRoot》"> <manager classname="org.apache.catalina.session.PersistentManager"   saveOnRestart="true"《是否儲存》 maxActiveSessions="1" 《最大的session 》> <Store className="org.apache.catalina.session.FileStore"《不能變化的》 directory="d:/a"《儲存的路徑》> 自定義xml檔案結束 直接訪問 8080/sess.xml直接訪問 session需要活化或者鈍化,主要是配置一下 sess.xml檔案