使用Synchronized Backing bean方法时显示JSF用户消息

时间:2017-01-25 08:34:41

标签: multithreading jsf synchronization

我在JSF View Scoped Bean中有一个方法doSomething(int param),它只能由一个线程使用,当从另一个线程(另一个用户)调用此方法时,它必须显示用户消息它仍然被第一个线程(第一个用户)使用。

我知道我必须使用“synchronized”但是如何实现这一目标?以及如何在用户调用消息时向用户显示消息?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在我看来,无论如何,你正在努力防守是不可能的。

根据JSF规范,@ ViewScoped带注释的bean仅存在于一个用户(会话)的上下文中,并且仅在特定视图正在使用的时间内存在。 当另一个用户(或者来自不同浏览器/选项卡的同一用户)进入同一视图时,将创建一个新的bean实例。

  

视图(@ViewScoped):在用户交互期间,视图范围仍然存在   使用Web应用程序的单个页面(视图)。

@ViewScoped线程安全性出现问题的唯一时间是当应用程序没有实现任何客户端ajax请求排队时,这是你应该考虑在bean中放置一些同步块的唯一情况。

如果不是这种情况,则只考虑@SessionScoped和@ApplicationScoped bean以确保线程安全。