0

在我的 jsps 中,我使用的是会话 bean。一些 bean 将 JNDI(LDAP) 或套接字作为成员变量。所以当 bean 被初始化时,这个连接也被打开了。

我的问题是,当我注销时,这些套接字或 JNDI 连接不可用。它们保留在内存中,并且正在消耗分配给 tomcat 的文件描述符。

为什么这些连接没有被 finalizer() 关闭?

会话到期后有什么可以清理所有连接的吗?(除了会话监听器,我需要更改很多代码吗?

4

1 回答 1

0

您根本不应该使用终结器。它们应该在对象被垃圾回收时运行,但是您无法知道 EJB 何时被 GC或即使它们是.

所以这里的答案是“不要让连接保持打开状态”,这适用于套接字、JNDI、数据库和许多其他资源。

于 2013-07-11T08:36:30.497 回答