- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在上下文被破坏时关闭所有 tomcat 连接池的数据源连接。 DriverManager.deregisterDriver(driver)
是否关闭所有连接?
Enumeration<Driver> enumDrivers = DriverManager.getDrivers();
while (enumDrivers.hasMoreElements()) {
Driver driver = enumDrivers.nextElement();
DriverManager.deregisterDriver(driver);
}
最佳答案
这是 JDK 8 上 DriverManager.deregisterDriver(Driver driver)
的代码:
DriverInfo aDriver = new DriverInfo(driver, null);
if(registeredDrivers.contains(aDriver)) {
if (isDriverAllowed(driver, Reflection.getCallerClass())) {
DriverInfo di = registeredDrivers.get(registeredDrivers.indexOf(aDriver));
// If a DriverAction was specified, Call it to notify the
// driver that it has been deregistered
if(di.action() != null) {
di.action().deregister();
}
registeredDrivers.remove(aDriver);
} else {
// If the caller does not have permission to load the driver then
// throw a SecurityException.
throw new SecurityException();
}
请注意,它只是从列表 (registeredDrivers
) 中删除 DriverInfo
实例。如果它找到与驱动程序关联的 DriverAction
,它会调用 driverAction.deregister()
。来自docs方法:
The
deregister
method is intended only to be used by JDBC Drivers and not by applications. JDBC drivers are recommended to not implementDriverAction
in a public class. If there are active connections to the database at the time that thederegister
method is called, it is implementation specific as to whether the connections are closed or allowed to continue. Once this method is called, it is implementation specific as to whether the driver may limit the ability to create new connections to the database, invoke other Driver methods or throw aSQLException
. Consult your JDBC driver's documentation for additional information on its behavior.
因此在所有情况下,您都不应该指望这一点,除非您完全确定底层实现。但这会使您的应用程序与它过于耦合。
关于java - DriverManager.deregisterDriver(driver) 是否关闭所有连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45913376/
调用oracle函数时DriverManager.getConnection与DriverManager.registerDriver()有什么区别? 我经常只使用DriverManager.getC
我想对这段代码进行单元测试,以验证调用了哪个 DriverManager.getConnection() 。DriverManager.getConnection(url,user,pass) 或 D
Apache Tomcat 6.0.35 hibernate 问题 com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@352e71c4
我正在尝试为调用 DriverManager.getConnection() 的方法编写单元测试。我正在使用 PowerMock 1.5 和 easymock。不知何故,Powermock 无法模拟
最近,我们在Hive连接中添加了SSL。我们通过添加 ssl=1;sslTrustStore=C:\\keytabs\\keys.truststore;trustStorePassword=foo 到
我有以下代码来测试新服务器上访问数据库的链接,一切都适用于现有服务器,并且我能够访问该文件夹。 !if.exists 返回 true,我可以使用 Runtime.getRuntime().exec("
我有一个应用程序,其目的是支持 jdbc:hive:// 和 jdbc:hive2:// 协议(protocol)的 JDBC 连接。以下代码加载这两种协议(protocol)相应的 JDBC 驱动程
尝试连接到我的 Oracle 11.1.0.7.0 时数据库使用 jdbc 和 ojdbc6.jar在匹配版本中,我发现了两个变体。 假设一个字符串 DBURL 形式的 jdbc:oracle:thi
我一直在尝试检测 getconnection 方法以获取在 JDBC 连接建立期间传递的 DB_URL。据我所知,DriverManager 的检测工作正常,因为注入(inject)部分工作正常而不会
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我正在使用 Java 和 mysql 作为数据库,但遇到了一个奇怪的问题:我的一位客户的连接非常不稳定,有时丢包率可能很高。好吧,我知道这不是软件的错误,但我去那里进行了测试,当程序调用“Driver
我正在开发一个 Java 应用程序,该应用程序可以连接到我的办公室网络,也可以不连接到我的办公室网络。 我的问题是,当用户未连接时,DriverManager.getConnection() 需要长达
我们在找出与 DriverManager 建立连接时收到错误消息的原因时遇到了一些麻烦。 这是我们的代码 package Databank; import java.sql.Connection; i
我有一个类,它连接到 H2 数据库并运行多个 SQL 语句。 public class H2Persistence implements IPersistence { private Conn
我正在尝试将 Java 程序连接到本地主机中的数据库。我的问题看起来很简单,但我找不到任何答案。 当我尝试编译时,出现以下错误: DriverManager.getConnection cannot
我正在尝试使用标准 JDBC 方式连接到数据库 connection = DriverManager.getConnection(url, username, password); 是否有连接超时的最
这个问题在这里已经有了答案: Connect Java to a MySQL database (14 个答案) 关闭 8 年前。 我正在尝试使用一个 Java 类,它在过去对我来说已经非常有用,以
我正在编写一些 gradle 插件,现在我遇到了 DriverManager 没有看到 buildscript 依赖项中定义的 JDBC 驱动程序的问题: 我有下一个 build.gradle 文件:
我正在编写一些 gradle 插件,现在我遇到了 DriverManager 没有看到 buildscript 依赖项中定义的 JDBC 驱动程序的问题: 我有下一个 build.gradle 文件:
我正在使用 jruby,并通过 db2jcc4.jar 文件调用 DB2/BIGSQL 数据库。我在插入和选择方面都建立了完美的连接,然后突然间我开始收到错误“未初始化的常量 DriverManage
我是一名优秀的程序员,十分优秀!