0

我刚开始学习ejb,现在有问题。我的ejb代码是

@Stateful
@StatefulTimeout(value=80, unit=TimeUnit.SECONDS)
public class HelloWorldBean 
    {
        int i = 0;
        public int SayHello()
        {
            return i++;
        }
    }

它仅用于测试。好的,所以,80 秒后我从 WildFly 得到问题

javax.ejb.NoSuchEJBException: WFLYEJB0168: Could not find EJB with id UnknownSessionID [5156495653657051576570495270526865695251507057526654654868486852]

1)我认为应该在 80 秒后删除 ejb,刷新页面后我会得到新的实例。还是在 80 秒后实例进行钝化(保存在硬盘上)?

2) UnknownSessionID 有什么问题?为什么 WildFly 不想将 ID 分配给 session ?

3) 使用此代码示例 - 为什么如果我同时使用两个不同的浏览器我有相同的实例?我认为有状态 bean 作为 one_bean-to-one_user 工作?因此,例如,在 Google Chrome 和 Firefox 中,我应该从 i=0 开始,并且在浏览器会话之间不应该有任何类似的数据

我将不胜感激您的帮助!

4

1 回答 1

1

1) 规范明确说明删除将在有状态超时后发生。Wildfly 遵循 EJB 规范。
2) Unknown session ID 是表示 bean 不存在的一种方式。
3) 您必须一直在使用相同的 servlet 来访问上面的 bean 代码。这意味着您必须只使用一个客户端来访问 bean。

于 2016-02-26T17:05:35.193 回答