2009-06-02 76 views
5

我們有一個基礎架構設置在Web服務器集羣和應用程序服務器不在的位置。 Web服務器根據循環策略將請求路由到應用程序服務器。跨WebSphere中的JVM的會話複製

在這種情況下,一個應用程序服務器中的可用會話數據在其他應用程序服務器中不可用。無論如何,第一個應用程序服務器的會話數據可以在第二個應用程序中使用嗎?這兩個應用程序服務器在不同單元中是物理上分離的盒子

一種方法可以使用數據庫 - 是否有任何其他方式來完成此會話複製?

+0

我相信你可以將它們配置爲WAS控制檯內的羣集,不是嗎? – 2009-06-02 12:37:11

回答

1

也許你可以看看'terracota'。它的緩存框架,它可以緩存會話和運行一個單獨的服務器

4

在WebSphere上主要有兩種方式來複制會話數據:

  1. 堅持到數據庫
  2. 存儲器到存儲器的傳輸

哪一種適合您的需求高度依賴於你的應用場景:

如何重要的是PE當所有應用程序服務器出現故障時,會話數據是否存在? 您同時擁有多少個會話對象?

在數據庫中,您可以存儲很多會話而沒有太多問題,另一個選項始終是可用內存量的問題。

如果你已經有了一個設置,那麼所有的應用服務器都會使用這個數據庫。

這裏是鏈接到WebSphere Information Center與必要的細節。

+0

感謝您的回覆dertoni。我們使用了相當數量的會話數據 - 同意這是一個不好的做法,但作爲一個維護應用程序,它一直是一個很好的例子。如果我們碰巧將數據保存在數據庫中,我們將不得不檢索它並重新填充應用程序對象以重新顯示期望的頁面,這在這裏將是一個挑戰。 – Subramanian 2009-06-10 07:12:16

+0

您是否知道websphere是否會複製會話數據,儘管在web應用程序的web.xml中,標記'distributable'不存在? http://stackoverflow.com/questions/26043080/does-websphere-replicate-the-session-although-the-web-xml-has-no-distributable-t – 2014-09-25 16:06:35

0

不要忘記oracle的連貫性。

2

一個明顯的解決方案是啓用您的應用程序服務器的集羣。我從你提出問題的方式假定你拒絕了這個選項。另一種選擇是更改Web服務器使用的路由以使用會話關聯(對同一會話的請求轉到同一個應用程序服務器)。

除此之外,我會通過dertoni回答答案。

1

在WebSphere,會話複製或數據庫中有兩種羣集選項。如果您擁有大型會話對象,則最好使用數據庫,因爲它允許您將過時的會話卸載到磁盤。如果它們被表示,那麼它們可以從數據庫中提取出來,如果使用會話複製,那麼這些會話不僅需要保留在內存中,而且還要保存在複製組中的其他服務器上。大會話可能會導致內存不足的情況。

對於數據庫會話處理,它也是非常可定製的,並且在我已經使用它的環境中沒有明顯的性能。