【发布时间】:2013-09-14 17:29:33
【问题描述】:
我有一个 java 应用程序,每隔几分钟就会从脚本中调用一次。流程是:
- 脚本每隔几分钟调用一次 java 进程。
- java 程序运行几分钟(有时更短),进行一些处理,完成后通过调用 System.exit(0) 退出。
- 在第 2 步中,为了进行处理,我们使用c3p0 连接池连接到 MySQL DB。
每次我们从池中获得连接时,我们都会调用close()。我们还将unreturnedConnectionTimeout 设置为20,以便任何时候连接的帮助时间过长或未关闭,c3p0 都会处理它。
我的问题是,一旦步骤 2 中的所有处理完成,在我们通过调用System.exit(0) 退出之前,我们是否需要清理连接池?
我知道使用连接池调用close() 只会将连接返回到池中,而实际上并没有“关闭”连接。那么在退出之前我需要对 conn 池进行任何清理吗?如果我不进行任何清理并退出 JVM,与 DB 的连接是否仍然存在,或者 c3p0 是否清理/强制关闭它们?谢谢!
【问题讨论】:
-
连接无论如何都不能在JVM进程中存活。当进程退出时,操作系统将关闭所有打开的套接字,除非你运行的是像 NetWare 3 或 4 这样的奇怪东西。
标签: java mysql jdbc connection-pooling c3p0