繁体   English   中英

何时有状态会话bean被销毁?

[英]When is the stateful session bean destroyed?

我是ejbs的新手,我想知道有状态会话bean是否会被销毁。 我在servlet中注入了一个有状态会话bean。 即使在30分钟后,我发现豆子是活跃的。 我正在使用jboss eap 6.0。 我相信HttpSession与有状态会话bean无关。 我使HttpSession失效,以确保HttpSession与statful会话bean无关。 那么,如果我的应用程序有很多用户,如果我创建一个新bean,那么我的服务器的性能就会降低。 容器如何管理有状态会话bean。 豆被移除或销毁的时间是什么时候?

我读过这篇文章和其他几篇文章。 但我没有明白。

有状态会话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();
}

@SessionScoped注释仅在Web上下文中有意义,在Web上下文之外,您应该假设您的@SessionScoped将被忽略,并且您的有状态EJB将表现得像旧的常规有状态ejb,并且您不应该注入有状态资源(旧的常规资源)有状态的EJB)进入无状态的(Servlet),在这种情况下,有状态ejbs的范围将取决于servlet实例的范围和java servlet规范。 并不严格要求容器为每个会话或请求创建一个servlet实例,事实上,一些容器将使用servlet的单个实例为所有客户端提供服务,在这种情况下,你最终会遇到这种丑陋的情况如果一个有状态的ejb实例将为您的所有客户提供服务,请查看此信息,

有状态会话bean在战争中打包并打包在ear-> jar中时出现意外行为

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM