2013-07-31 83 views
0

我們有多個在服務器上運行的weblogic實例。 所有這些實例僅訪問單個數據庫。同步多個weblogic數據庫訪問

其中一個表存儲我們需要處理的請求。 問題是多個weblogic可以在給定時間訪問數據庫,並可以選擇請求並處理它。 由於這一請求被多次處理,所以&會產生問題。

這些沒有用於在存儲該標誌的DB中創建額外屬性,無論該記錄是否被處理,因爲2 weblogic可以在同一時間訪問該記錄。

訪問數據庫的代碼是Java,但沒有使用該部分進行同步,因爲每個weblogic都有單獨的代碼副本。

請建議我們如何確保通過多次運行的weblogics只處理一條記錄。

+0

看看Oracle高級隊列。您可以將表記錄發佈到一個隊列並擁有多個使用者。請參閱白皮書 - http://www.oracle.com/technetwork/database/features/data-integration/oracle-aq-tech-wp11-2-191324.pdf – OldProgrammer

回答

1

那麼,答案取決於,你如何訪問數據庫,使用像休眠或簡單JDBC的API。你可以做的一件事是,你可以管理這個直通會話。一旦記錄被訪問,它就變成DIRTY,因此下次不會被訪問。您肯定需要添加一些機制,可以讓您的應用程序知道「哪些請求已處理,哪些請求未處理」。

2 weblogic可以在同一時間訪問該記錄。

這對我來說似乎很可怕,因此,您需要確保原子性。我猜,(不知道)當一個網絡邏輯訪問它時,它佔用了交易的鎖定。另一個Web邏輯應該有另一個相同記錄的新副本,事實上在釋放鎖之後)。

希望這會有所幫助。