2014-08-28 65 views
0

我有一個系統在多個Apache服務器後面有多個jboss(4.2.3)服務器。當在不同的應用程序服務器上生成新的JSESSIONID

在其中一個jboss服務器出現故障的情況下,我們仍然會爲那些服務器進入會話,但是由於JSESSIONID中的應用程序服務器ID,它們會「反彈」服務器,從而導致apache發送請求隨機服務器爲每個請求,導致會話超時錯誤。

我最初的想法是在應用程序中創建一個攔截器來使會話無效,如果我們檢測到會話實際上是針對不同的服務器的話(即session.invalidate()) 但是這不會導致新的JSESSIONID生成(即使與這裏描述https://issues.jboss.org/browse/JBAS-4436修復)

我的下一個想法是創建一個閥門做同樣的工作,但是,從請求而不是HttpServletRequest的,但是我無法找到庫添加ValveBase到JBoss 4.2.3(我甚至不確定閥門是否由4.2.3支持)

是否有:

a)我錯過了讓我的兩個想法之一工作 或 b)任何更好的想法,我沒有想過解決這個問題? (我想集羣的會議,但不能在目前由於基礎設施問題)

謝謝。

回答

0

在Apache中使用Session Sticky,所以它不會切換到其他應用程序服務器,直到它死亡。

+0

我已經打開Session Stickyness,這就是問題所在,它一直在試圖堅持服務器一旦死掉,一切都很好,直到其中一個應用程序服務器死亡。 – Arcjc 2014-09-02 12:52:32

+0

這是一個預期的行爲 – KNOWARTH 2014-09-03 05:20:30

相關問題