2011-03-24 52 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

相关问题