Java 当没有调用@Remove注释的方法时,有状态会话bean会导致泄漏吗?

Java 当没有调用@Remove注释的方法时,有状态会话bean会导致泄漏吗?,java,ejb,ejb-3.0,Java,Ejb,Ejb 3.0,我有一个JSF应用程序,它在托管bean中从远程有状态会话bean(EJB3.0)调用业务逻辑 现在有一个HttpSessionListener,它在有状态会话bean上调用@Remove注释的方法,这样一旦HttpSession被销毁,容器就可以删除有状态会话bean 现在我想知道如果我不调用@Remove注释的方法,HttpSession就会被破坏,会发生什么。有状态会话bean的客户机不存在记录器。容器是否会删除有状态会话bean?或者它是否会永远存在,导致某种泄漏(内存/磁盘)?是的,容

我有一个JSF应用程序,它在托管bean中从远程有状态会话bean(EJB3.0)调用业务逻辑

现在有一个HttpSessionListener,它在有状态会话bean上调用@Remove注释的方法,这样一旦HttpSession被销毁,容器就可以删除有状态会话bean


现在我想知道如果我不调用@Remove注释的方法,HttpSession就会被破坏,会发生什么。有状态会话bean的客户机不存在记录器。容器是否会删除有状态会话bean?或者它是否会永远存在,导致某种泄漏(内存/磁盘)?

是的,容器将在超时时删除未使用的有状态会话bean。无论如何,当不再需要bean的状态时调用@Remove注释的方法是要遵循的模式


有状态会话bean的删除超时可以在应用程序服务器的设置中设置。

如果未指定
@Remove
注释,则有状态bean将保留在上下文中,直到指定的超时时间。它不会直接调用泄漏,但是如果您没有正确管理依赖项,并且还有一些引用,那么您可能会有潜在的内存泄漏。因此建议使用
@Remove
注释