Archive

文章標籤 ‘servlet’

Java Session 監控

2008年5月20日 尚無評論

好幾年前寫過線上人數,當初用JSP寫 似乎 沒遇到多大的問題
最近,碰到需要檢測帳號只能同時一個在線上,才遇到了一些問題
一般有了問題才會深入,才更瞭解session的監控原理及模式
唉~~這就是所謂的半調子呀!

Session表示使用者連到系統的請求暫存記錄,每個使用者(瀏覽器)連至系統時,系統會自動給予一組Session ID去辨別這個使用者
而有些連結的資訊就會透過這組session id保留在主機,以便使用者連線使用。

在java Servlet實作session時,可透過監聽session 建立及結束當被觸發時以進行初始化及還原的動作
只要implements HttpSessionListener並實作 sessionCreated 及 sessionDestroyed method即可

或是可以針對session傳出傳入值時進行監聽,如此一來即可在傳入的時候(即使用用HttpSession的setAttribute方法時)
以及移除的時候(即使用用HttpSession的removeAttribute方法或session time out時)觸發valueBound和valueUnbound方法

只要在傳入的object implements HttpSessionBindingListener 並實作valueBound和valueUnbound 即可
這樣就可以在上述提到的時機點觸發相關的方法

因此,我們就可以利用上述特性進行客戶的日誌記錄或上線人數的統計等
而再一提的,如果要做到上線人數的統計或是像我這次記錄使用者只能一組在線上
就還要再使用一個全域的system session,在JSP是叫application (顧名思義就是整個WEB應用系統都可以使用的session)
而在Servlet,可以從session或request 取出ServletContext
(這個等同於jsp的application,有關ServletContext的敘述請參考Servlet規範),
如此就可以利用ServletContext的全局特性,去記錄和整個系統有關的資訊了!!

參考資料:Servlet中如何捕獲Session事件–MaYong – 希賽IT博客,中國最大的IT專業博客

Categories: JAVA Tags: , ,