java - 有状态 session bean 何时被销毁?

标签 java ejb-3.0 java-ee-6 stateful-session-bean

我是 ejbs 的新手,我想知道有状态 session bean 是否会被销毁。我在我的 servlet 中注入(inject)了一个有状态 session bean。即使在 30 分钟后,我也看到该 bean 处于 Activity 状态。我正在使用 jboss eap 6.0。我相信 HttpSession 与有状态 session bean 无关。我使 HttpSession 无效以确保 HttpSession 与有状态 session bean 无关。那么如果我的应用程序有很多用户,如果我为每个用户创建一个新 bean,我的服务器的性能就会下降。容器如何管理有状态 session bean。什么时候删除或销毁 bean?

我读了this发布和其他一些。但是我没有弄清楚。

最佳答案

有状态 session Bean 不是客户端上下文化的,必须在您的代码中显式销毁。

1) SFSB 必须定义一个由@Remove 注释的方法:

@Stateful
@Local(ILocalQuiz.class)
public class QuizBean implements ILocalQuiz{

//...

    @Remove
    @Override
    public void end() {
        System.out.println("QuizBean instance will be removed..");
    }

}

2) SessionScoped bean 必须显式调用 end() 方法:

public void cleanUp(){
    System.out.println("Cleaning up before destroying the SessionScoped  bean.");
    quizProxy.end();
}

关于java - 有状态 session bean 何时被销毁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21459788/

相关文章:

java - 比较字符串数组

java - 如何对 Entity-Bean @OneToMany 关系应用默认限制

web-services - Glassfish、EJB3、SOAP Web 服务和基本身份验证

java - 为什么像素颜色在 Android 上的 OpenGL ES 2.0 中不正确?

java - 在 Eclipse Workspace 中查找最常用的 Java 方法

java - Grails - 为什么需要 withTransaction?

hibernate - JPA 是否支持数据库中没有外键约束的实体之间的 @OneToMany 映射?

java - 将单例 session Bean 注入(inject)无状态 session Bean

java - 更新不需要或不需要 em.persist() 或 em.merge() 吗?

jakarta-ee - 在 JAX-RS 中使用 @stateless 在 Java EE 6 及更高版本中提供什么好处?