2011-03-24 61 views
0

我有一個支持bean的方法,將產品添加到db。它會檢查產品是否重複。但是,這是一個緩慢的過程,JSF UI可能同時觸發多個請求,並且由於多個線程同時運行此應用程序,因此無法在添加db中的東西時檢查重複。什麼是使這個方法線程安全的最好方法。把它作爲一個同步方法?jsf使backing bean方法同步

public int addProduct(final ActionEvent event){ 
// check duplicates code....long process 
// insert product in db code....long process 
} 

回答

1

不要讓​​在下列情況下 - 它要麼沒有效果(請求作用域的bean),或者會殺死你的應用程序(應用程序作用域的bean)。對於會話範圍的bean,它不會有明顯的副作用。

但通常情況下,解決此問題的方法是禁用觸發請求的UI組件。

+0

確認在方法上放置「同步」不起作用。 – 2011-03-25 00:11:22

+0

確實沒有。由於bean是請求作用域,因此只爲每個請求創建一個新的請求。它不會像以前的請求那樣使用相同的bean或者其他東西:) – BalusC 2011-03-25 00:43:41

+0

但是,長時間運行的操作(如對會話作用域bean的大量下載請求)又如何?當UI未被阻止時,也許最好是同步下載方法? – opfau 2015-06-26 07:40:10

相關問題