Java Tomcat JDBC连接资源未释放
我有一个使用TomcatJDBC连接池的项目 根据JDK规范,Java Tomcat JDBC连接资源未释放,java,tomcat,jdbc,pool,Java,Tomcat,Jdbc,Pool,我有一个使用TomcatJDBC连接池的项目 根据JDK规范,Connection.close()方法应该释放连接的资源,如语句和结果集 我知道当使用池中的连接时,close()方法将被重写,以释放回池的连接。我想知道这个被重写的方法是否应该正确地关闭相关的资源 Tomcat JDBC连接池不释放资源,我需要显式关闭代码中的所有资源 调用Connection.close()时,是否有其他池实现可以正确关闭所有相关资源?您可以使用拦截器配置tomcat jdbc。 您被询问的是StatementF
Connection.close()
方法应该释放连接的资源,如语句
和结果集
我知道当使用池中的连接时,close()
方法将被重写,以释放回池的连接。我想知道这个被重写的方法是否应该正确地关闭相关的资源
Tomcat JDBC连接池不释放资源,我需要显式关闭代码中的所有资源
调用
Connection.close()
时,是否有其他池实现可以正确关闭所有相关资源?您可以使用拦截器配置tomcat jdbc。
您被询问的是StatementFinalizer
为什么需要在代码中关闭它们?为什么要关闭连接并将其从池中清除?拥有一个连接池的关键是要有准备好的、已建立的连接,这些连接可以在需要时随时使用,而无需建立耗时的连接。Tomcat附带它是有原因的,不要试图杀死核心。你是对的,当调用
connection.close()将连接返回到连接池时,正确的连接池实现将关闭结果集、语句和其他资源
@ChristopherSchutz我看不出你的评论涉及问题的哪一部分。关闭(池)连接会将其返回到池。根据规范,连接关闭必须关闭相关资源(结果集、语句等),即使物理连接未真正关闭,连接池发出的逻辑连接也将关闭。您永远不应依赖连接的该行为,而应正确关闭所有(自动)关闭中的资源最后尝试。Tomcat JDBC很可能也使用语句缓存,因此关闭语句也不会关闭它。连接池的行为比您理解的要复杂得多,我向您保证,Tomcat JDBC池的功能符合预期。