我确定我在这里遗漏了一些东西..但是我有一个会话范围的 EJB:
@javax.inject.Named
@javax.ejb.Stateful
@javax.enterprise.context.SessionScoped
public class Authenticator implements Serializable
{
...
我希望每个 HTTP 会话都会看到这个 EJB 的不同实例?
但是,当从多个浏览器(包括在不同的机器上)访问 JSF 页面时,输出
#{authenticator.hashCode()}
所有这些都是相同的(当然还有类的成员属性)。为什么会这样?(我已经尝试删除 @Stateful 注释,但同样适用)。
我正在使用 JBoss AS 7.1.0。
编辑:我发现在 Authenticator 上创建一个方法:
public void getHashCode()
{
return hashCode();
}
并在 EL 中将其引用为
#{authenticator.hashCode()}
表明我实际上正在访问 bean 的不同实例;但这是为什么呢?我不明白为什么这两个 EL 表达式的结果会不同。