解決的辦法簡單到讓人不敢相信,在app的web.xml中加一行 <distributable /> 即可(前提:jboss cluster是使用mod_cluster實作的),有了這個節點後,向某台server寫入session時,session會自動複制到其它server node。
下面來具體驗證一下:
網絡環境:

如上圖,有二台機器:172.21.129.181(Master Server & Apacha Server)、172.21.129.128(Slave Server)
User所在的計算機IP為: 172.21.129.57 (圖中未标出)
Sample Application:
為了驗證,我們建一個最簡單的spring mvc web應用
Controller代碼如下:
write.jsp:(寫入session)
read.jsp:(顯示session)
準備就緒,依次以domain模式啟動master server、slave server上的jboss,最後啟動apache server。
然後通路:
http://172.21.129.181/ModClusterSample/session-write.do 寫入session
繼續通路:
http://172.21.129.181/ModClusterSample/session-read.do 讀取session
從輸出的幾個IP看,本次請求apache轉發到了 172.21.129.128上(即:slave Server),user用戶端的IP為 172.21.129.57,而apache server的IP為172.21.129.181
另外第一行表明正确讀取到了session值:sample value
這時進入master server的jboss控制台,将slave master上的jboss server給stop掉
再次重新整理user機器上的http://172.21.129.181/ModClusterSample/session-read.do
可以看到,因為slave server上的jboss server已經被停掉了,是以本次http請求被轉發到了172.21.129.181上(即master server),但是session值仍然能正常輸出,說明session值在寫入的同時,确實已經被複制到二台jboss server上了,session replication驗證成功!