2
在我們的項目中,我們需要分佈式同步,其中給定線程的鎖狀態必須在集羣中的多個節點上同步,以便運行在其他節點上的線程可以等待此鎖定對象。我知道Java不會跨越JVM執行此操作。在我們的項目的這個階段,我沒有槓桿來引入新的第三方產品(如Terracotta)。我想知道如果Weblogic(11g)有一些內置設施,可以讓我實現這個...weblogic內置的分佈式同步設施
在我們的項目中,我們需要分佈式同步,其中給定線程的鎖狀態必須在集羣中的多個節點上同步,以便運行在其他節點上的線程可以等待此鎖定對象。我知道Java不會跨越JVM執行此操作。在我們的項目的這個階段,我沒有槓桿來引入新的第三方產品(如Terracotta)。我想知道如果Weblogic(11g)有一些內置設施,可以讓我實現這個...weblogic內置的分佈式同步設施
您可以使用SingletonService
。它是WebLogic中的一個集羣範圍的單例。您應該將其綁定到activate
方法中的JNDI名稱,然後從其他bean進行查找和調用。記住要將你的單例服務對象作爲一個普通的RMI對象而不是EJB來實現,所以建立一個接口擴展爲Remote
並將RemoteExceptions
添加到方法中。
爲此,您必須配置WebLogic羣集服務遷移和遷移基礎。
這是用於實施和配置服務的complete guide。
感謝您的輸入@Grzegorz - 我可以創建一個hashmap來保存鎖定信息,並且此服務可以使羣集中所有節點的hashmap保持同步/可用。但是我在這個方案中看到的唯一的大問題是每個對這個Singleton服務的調用都是一個REMOTE調用 - 這將會有很大的開銷 我在想(在你建議這個SingletonService之前)維護一個保持鎖的oracle數據庫表信息,即哪個線程對哪個對象id有鎖定,但對數據庫調用開銷保持警惕。 我認爲這裏的問題是 - 哪個更快? –
@roobanbajwa我不知道。你必須對兩個解決方案進行基準測試 –
yea認爲如此:-)我試圖避免這種情況..但在這種情況下,我將繼續使用這個Singleton服務解決方案,並將其與DB解決方案進行比較,如果需要的話。 –