当前位置: 首页 > 知识库问答 >
问题:

如何验证连接池返回的连接对象?

伯庆
2023-03-14

我正在做jndi查找JBOSS AS. Code中配置的数据源,如下所示。

initialContext=新的initialContext(道具);

dataSource=(dataSource)initialContext。查找(bundle.getString(“jndiName”);

ource.get连接;

这段代码放在servlet的doPost中。我也很安全地打电话给你

联系关闭()

使用连接对象后。

我的数据源配置有以下条目

<min-pool-size>1</min-pool-size>
<max-pool-size>1</max-pool-size>

根据我对连池的理解,每次我向servlet发出请求时,相同的连接对象都会通过data. getConnection()调用返回(因为我已经指定最小和最大池大小为1,并且调用关闭不会关闭DB连接)。

现在,我如何验证是否返回了相同的连接对象?

共有1个答案

洪建茗
2023-03-14

实际上,您无法确定它是同一个连接。它可能与数据库连接有问题,所以必须创建另一个连接。为什么要验证连接?也许您可以保存哈希值并比较它们?

 类似资料:
  • 使用来自DBCP的BasicDataSource,如果我们执行getConnection()并且在最后一个块中我们关闭连接,它是真的将连接返回到池还是关闭连接。我正在检查的代码片段是这样的 我正在检查BasicDataSource的源代码,并访问了这个包装类以获取连接。 委托对象的类型为java。sql。联系包装器代码调用委托的close方法,该方法将关闭集合,而不是将连接返回到池。这是DBCP的

  • 前几天我经历了应用程序的中断,我需要了解以后如何避免这种情况。 我们有一个运行在Tomcat7上的基于Java的web应用程序。应用程序连接到几个不同的数据源,包括Oracle数据库。 下面是我对连接验证的理解。 连接在空闲时(testWhileIdle=false)、借用时(testOnBorrow=false)、返回时(testOnReturn=false) 由于timeBetweenEvic

  • 我正在使用hikaricp(这可能也适用于任何其他数据库连接池)。我有一个DBPool类,在其中我实例化了一个HikariDataSource(使用HikariConfig对象)。对于这个DBPool,我使用lazyholder习惯用法来限制每个VM一个池实例。但是,一旦获得对池的引用,就可以检索连接对象(无需任何进一步的锁/同步/信号量检查),因为我认为连接池会处理我的连接对象限制。每次通过数据

  • 当我将enableTransactionSupport设置为true时,连接不会返回到池。即使事务方法已经完成,连接也会绑定到线程,这是一个大问题,如何解决?我使用spring数据redis 2.7.2和jedis 2.8.1 连接没有释放到redis池,如果我没有使用enableTransactionSupport,这是可以的。但它不支持Spring的Transactional。如何解决?

  • 我对连接池有一些疑问。在SQL Server连接池文章中提到的内容类似于“打开新连接时,如果连接字符串与现有池不完全匹配,则会创建一个新池。每个进程、每个应用程序域、每个连接字符串以及使用集成安全性时、每个Windows标识将连接池化。” 现在我有了自己的windows窗体应用程序,它具有SQL连接。 > 所以当我打开应用程序时,SQL连接首次打开,并创建了一个池。所以,如果我关闭应用程序池会被自