JSF会话管理的Bean数据被并发访问弄乱了

JSF会话管理的Bean数据被并发访问弄乱了,jsf,session-state,Jsf,Session State,我正在开发一个JSF2.0应用程序。我创建了一个SessionScoped托管bean,它存储有关登录用户的一些关键数据。当两个不同的用户从两台不同的机器登录时,第一个登录用户存储在会话bean中的用户信息将被第二个用户信息覆盖。下面是源代码 import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; @ManagedBean(name = "sessionBean") @SessionScoped

我正在开发一个JSF2.0应用程序。我创建了一个SessionScoped托管bean,它存储有关登录用户的一些关键数据。当两个不同的用户从两台不同的机器登录时,第一个登录用户存储在会话bean中的用户信息将被第二个用户信息覆盖。下面是源代码

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;


@ManagedBean(name = "sessionBean")
@SessionScoped
public class SessionManagedBean implements Serializable
{

private static final long serialVersionUID = 1L;
private SetUsers user;


public String getUsername()
{
    if (user != null)
        return user.getUsrFirstname() + " " + user.getUsrLastname();
    return "";
}

public String getUserid()
{
    if (user != null)
        return user.getUsrLoginId();
    return "";
}

public int getUserGroup()
{
    if (user != null)
        return user.getUsrGroupId();
    return 0;
}



/**
 * @return the user
 */
public SetUsers getUser()
{
    return user;
}

/**
 * @param user
 * Set the user object
 */
public void setUser(SetUsers user)
{
    this.user = user;
}
}
如何维护特定于用户的信息,使其不受多用户登录的影响


谢谢您的帮助。

@kolossus:我添加了源代码。如果您需要其他详细信息,请告诉我。两台不同的机器或同一浏览器上的两个不同窗口
@SessionScoped
bean未同步,因此您必须这样做。你把这个豆子放在什么地方了吗?就像在一个
@ApplicationScoped
bean中,将相同的引用返回给多个人一样?我用两台不同的机器进行了测试,得到了相同的响应。我没有将这个bean存储在任何其他作用域bean中。但是会话bean的值是通过另一个@RequestScope bean设置的。此外,我还提供了一个静态实用程序方法,用于在任何时间点获取会话值。使用错误的方法从bean工厂检索sessionBean实例。我使用“ContextLoader.getCurrentWebApplicationContext”检索bean实例。这使豆子在春天恢复了生机。这是问题的根本原因。修改了这部分代码以从FacesContext检索它。然后它就如预期的那样工作了。