2012-09-20 66 views
3

Ours是基於JSP/JSF的應用程序,可在Weblogic 10上運行(在生產環境中運行集羣)。我們有一個場景,其中(登錄)用戶獲取對象上基於時間戳的鎖。獲得鎖後,代碼每60秒運行一次以更新/使鎖無效。目前鎖的細節在數據庫中維護。意思是每60秒鐘更新一次鎖定,就會觸發更新查詢。在集羣環境中跨JSP應用程序共享HashMap

我們試圖在應用程序層移動此邏輯,我們可以避免觸擊數據庫。爲此,之前寫入數據庫的數據現在保存在HashMap中。但是,HashMap存儲在ServletContext對象中。爲了獲取新用戶的鎖,從ServletContext對象獲取HashMap,然後對其執行任何操作。

但是,它剛剛發現ServletContext對象不會跨集羣複製。因此,如果我有一個HashMap被改變,比如,當user-1獲得對象-1的鎖定並且用戶2登錄時,node-1嘗試獲取對象-1的鎖定,但是請求命中了節點-2,我想,邏輯會失敗,對吧?因爲節點2不會有更新的HashMap。

任何想法/建議?請幫忙。

謝謝 一個

回答

1

是的,我們做了類似的事情,爲我們的項目之一,WebLogic Server上共享ServletContext的所有羣集節點之間

檢查下面的參數爲WebLogic

coherence- servletcontext-clustered

無論是true或false來表示ServletContext的屬性是否將被聚集。如果爲true,則所有可序列化的ServletContext屬性值將在所有羣集節點之間共享。

如果未指定,則默認爲false,主要是因爲Servlet規範指示ServletContext屬性對於JVM而言是本地的並且不應該成簇。

欲瞭解更多詳情,請參閱http://docs.oracle.com/cd/E13924_01/coh.340/e14408/appparams.htm

+0

謝謝。但這是Oracle Coherence特有的,不是嗎?我不認爲我們正在使用它。 –

+0

使用這個:)...如果它解決了你的問題 –

+0

不,我們沒有靈活性來爲項目添加一個新的框架。 –