Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat JDBC连接资源未释放_Java_Tomcat_Jdbc_Pool - Fatal编程技术网

Java Tomcat JDBC连接资源未释放

Java Tomcat JDBC连接资源未释放,java,tomcat,jdbc,pool,Java,Tomcat,Jdbc,Pool,我有一个使用TomcatJDBC连接池的项目 根据JDK规范,Connection.close()方法应该释放连接的资源,如语句和结果集 我知道当使用池中的连接时,close()方法将被重写,以释放回池的连接。我想知道这个被重写的方法是否应该正确地关闭相关的资源 Tomcat JDBC连接池不释放资源,我需要显式关闭代码中的所有资源 调用Connection.close()时,是否有其他池实现可以正确关闭所有相关资源?您可以使用拦截器配置tomcat jdbc。 您被询问的是StatementF

我有一个使用TomcatJDBC连接池的项目

根据JDK规范,
Connection.close()
方法应该释放连接的资源,如
语句
结果集

我知道当使用池中的连接时,
close()
方法将被重写,以释放回池的连接。我想知道这个被重写的方法是否应该正确地关闭相关的资源

Tomcat JDBC连接池不释放资源,我需要显式关闭代码中的所有资源


调用
Connection.close()
时,是否有其他池实现可以正确关闭所有相关资源?

您可以使用拦截器配置tomcat jdbc。 您被询问的是StatementFinalizer


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