2016-02-16 38 views
0

我寫的EAI(外部認證接口)解決方案,提供登錄/註銷頁面的某些應用JSF視圖中使用反向代理

當過期的錯誤

目前,我們有它坐落在兩個前一個F5負載均衡器的WebSEAL 6.1反向代理,然後WebSphere Application Server上運行的應用程序之間的平衡請求8.0.0.10

頁面正在從一個JSF應用程序2.0.6供應和使用客戶保存狀態,這樣我們就不必登錄會話超時

頁面也使用請求範圍的bean儘可能接近無狀態,因爲我無法使用JSF 2.2來使用真實的無狀態標誌

我們發現以下場景存在問題並且正在努力爭取解決方案

  1. 客戶進入瀏覽器的登錄頁面。的WebSEAL將它們發送到WebSphere服務器
  2. 然後,客戶提交表單之一,但的WebSEAL發送了新的要求,以不同的WebSphere服務器
  3. 客戶比遇到一個錯誤,但被重定向到一個空白的登錄頁面

我們使用OmniFaces FullAjaxExceptionHandler趕上那是在第2步

產生我們還可以通過強制WebSEAL以重定向兩個WebSphere服務器之間的流量和模擬情景重現該錯誤查看過期的錯誤

這個問題似乎是因爲從一個WebSphere服務器的視圖狀態不與其他WebSphere服務器,這是有道理的

對於我們的目的兼容,我們才真正需要提交的表單信息,以登錄用戶,視圖狀態不是必需的從我們這邊

有沒有辦法使客戶端視圖狀態從一臺服務器兼容或與另一臺服務器一起工作?

任何有關這個問題的幫助,將不勝感激。

+0

_「這個問題似乎是因爲進行來自一個WebSphere服務器的視圖狀態與其他WebSphere服務器不兼容,這很有意義「_爲什麼這有意義?在服務器端保存狀態並不使用集羣,但爲什麼在這裏? – Kukeltje

+0

@Kukeltje道歉對我來說很有意義,我曾經假定即使在使用客戶端狀態保存時,視圖狀態也是特定於單個WebSphere服務器,而不是任何WebSphere服務器中的通用狀態。 –

+0

也許你應該爲客戶端狀態保存配置一個明確的加密密鑰(或者你是否已經有了?) – Kukeltje

回答

1

我不確定是否允許我回答自己的問題,但我找到了適合我們的解決方案。

在這些情況下,我們使用OmniFaces enableRestorableView標記來重建視圖損壞/丟失的視圖。

http://showcase.omnifaces.org/taghandlers/enableRestorableView

在這兩個我們強制斷線,並在頁面視圖狀態篡改測試用例的標籤可以讓我們的應用程序中使用的形式參數