【问题标题】:jsf make backing bean method synchronizedjsf 使支持 bean 方法同步
【发布时间】:2011-03-24 23:49:45
【问题描述】:

我有一个支持 bean 的方法,可以将产品添加到数据库中。它检查产品是否重复。但是,这是一个缓慢的过程,JSF UI 可能会同时触发多个请求,并且由于多个线程同时运行此应用程序,在 db 中添加内容时无法检查重复项。使此方法线程安全的最佳方法是什么。将其作为同步方法?

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

【问题讨论】:

    标签: jsf


    【解决方案1】:

    在以下情况下不要使用synchronized - 它要么没有效果(请求范围的 bean),要么会终止您的应用程序(应用范围的 bean)。对于会话范围的 bean,它不会产生明显的副作用。

    但通常解决此问题的方法是禁用触发请求的 UI 组件。

    【讨论】:

    • 已确认将“同步”放在方法上没有任何效果。
    • 确实没有。由于 bean 是请求范围的,因此为每个请求创建一个新的。它不会使用与上一个请求或其他东西相同的 bean :)
    • 但是对于会话范围 bean 的大下载请求等长时间运行的操作呢?当UI不被阻塞时,同步下载方式会不会更好?
    猜你喜欢
    • 2017-06-10
    • 2011-04-04
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2011-05-09
    • 2011-03-05
    • 2012-09-06
    相关资源
    最近更新 更多