在我们的 Web 应用程序中测试并发访问时,我们在跟踪会话行为时遇到了一些困难。
假设我们有三个不同的用户,A、B 和 C。
我们正在使用这三个用户使用三个不同的浏览器登录应用程序,然后在运行时我的用户对象从 B 更改为 A 或 B 更改为 C 或 C 更改为 A,但这是随机发生的。
我的 UserContextHolder 类是:
public final class UserObjContextHolder {
private static final ThreadLocal<UserObj> CONTEXT_HOLDER = new ThreadLocal<UserObj>();
private UserObjContextHolder() {
}
public static void setUserObj(UserObj userObj) {
CONTEXT_HOLDER.set(userObj);
}
public static UserObj getUserObj() {
return CONTEXT_HOLDER.get();
}
}
我正在为 ORM 和 Spring MVC 使用 Hibernate
谁能告诉我此会话行为的原因或如何同步它?
我注意到一件事:如果用户 A 已登录并执行一些搜索操作,并且如果用户 B 同时登录,则 userObj A 将更改为 userObj B。
它与应用程序服务器设置有关吗?这仅在进行身份验证时发生。