我是 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/