1
我有一個消息驅動Bean,它接收審計消息。這些消息還包含有關正在審計的系統的信息。收到消息時,如果系統不存在或重新使用現有系統,則MDB可以創建該系統。跨實例同步對MDB方法的訪問
我面臨的挑戰是,當了很多新的系統消息的同時接收,創建了多個MDB實例,並且最終創建重複的系統。向數據庫添加約束是解決該問題的一種方法。在這種情況下,有沒有辦法避免應用程序中的這些重複項,MDB?
我有一個消息驅動Bean,它接收審計消息。這些消息還包含有關正在審計的系統的信息。收到消息時,如果系統不存在或重新使用現有系統,則MDB可以創建該系統。跨實例同步對MDB方法的訪問
我面臨的挑戰是,當了很多新的系統消息的同時接收,創建了多個MDB實例,並且最終創建重複的系統。向數據庫添加約束是解決該問題的一種方法。在這種情況下,有沒有辦法避免應用程序中的這些重複項,MDB?
你可以嘗試這樣的事:
private Object LOCK;
public void onMessage() {
code…
synchronized(LOCK) {
check if system exists, create if necessary
}
more code…
}
確保只有一個線程處理所有消息。這可以在激活規範,連接池中進行配置。
這個代碼將在單個實例上僅同步,使得LOCK靜將在所有類實例同步,感謝 – n002213f 2010-11-17 06:18:35
你是對的,當然。接得好。 – 2010-11-17 12:50:08
-1:你不應該在bean中使用非最終的靜態變量。 – 2013-10-16 12:33:44