其中有乙個idlestatuschecker成員,它用來對服務的空閒狀態進行檢查,在乙個服務啟用時會將服務納入到檢查名單中,而在服務失效時會將服務從名單中剔除。會單獨開乙個執行緒進行具體的空閒檢查,這是通過下面這個執行緒類來負責的:
具體的空閒檢查**如下,超過能容忍的最大空閒時間,就會fire出sessionidle事件,上文也說過空閒有三種型別:讀端空,寫端空,雙端空。
在釋放資源的方法時,首先去獲取釋放鎖disposallock才行,然後具體的釋放動作是通過dispose0完成的,接著取消掉空閒檢查執行緒,此外,若執行緒是內部建立的執行緒池中的一員,則通過執行緒池去關閉執行緒。
再來看會話初始化完成後的動作每個session都保持有自己的屬性對映圖,在會話結束初始化時,應該設定這個attributemap。
除此以為,還應該為會話配置寫請求佇列:
在初始化時會在會話的屬性中加入一項session_created_future,這個屬性會在連線真正建立後從會話中去除。
Mina2 0框架原始碼剖析(二)
介紹了幾個核心的介面,這一篇主要介紹實現這些介面的抽象基類。首先是實現ioservice介面的abstractioservice類。它包含了乙個executor來處理到來的事件。每個abstractioservice都乙個atomicinteger型別的id號,確保每個id的唯一性。它內部的exec...
Mina2 0框架原始碼剖析(三)
abstractioacceptor類繼承自abstractioservice基類,並實現了ioacceptor介面,它主要的成員變數是本地繫結位址。在呼叫bind或unbind方法時需要先獲取繫結鎖bindlock,具體的繫結操作還是在bind0這個方法中實現的。一旦繫結成功後,就會向服務監聽者發...
Mina2 0框架原始碼剖析(五)
前面介紹過iosessionrecycler是負責 不再使用的會話的介面,expiringsessionrecycler是其乙個實現類,用於 超時失效的會話。private expiringmapsessionmap 待處理的會話集 private expiringmap.expirer mapex...