我正在做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连接)。
现在,我如何验证是否返回了相同的连接对象?
实际上,您无法确定它是同一个连接。它可能与数据库连接有问题,所以必须创建另一个连接。为什么要验证连接?也许您可以保存哈希值并比较它们?
使用来自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。如何解决?
我正在尝试使用HikariCP连接池。我能够让它工作,并获得一个我可以使用的连接。我不确定将连接返回到池的最佳方法是什么。 我有以下问题: 我是否应该在完成后关闭连接,依赖idleTimeout和maxLifetime设置,或者是否可以使用另一个调用来避免占用池中的连接 如果我关闭连接(而不是返回池),是否会创建其他连接对象以满足连接池大小的要求 寻找有用的建议。