Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在我的 jsps 中,我使用的是会话 bean。一些 bean 将 JNDI(LDAP) 或套接字作为成员变量。所以当 bean 被初始化时,这个连接也被打开了。
我的问题是,当我注销时,这些套接字或 JNDI 连接不可用。它们保留在内存中,并且正在消耗分配给 tomcat 的文件描述符。
为什么这些连接没有被 finalizer() 关闭?
会话到期后有什么可以清理所有连接的吗?(除了会话监听器,我需要更改很多代码吗?
您根本不应该使用终结器。它们应该在对象被垃圾回收时运行,但是您无法知道 EJB 何时被 GC或即使它们是.
所以这里的答案是“不要让连接保持打开状态”,这适用于套接字、JNDI、数据库和许多其他资源。