请问大家,jfinal 如果添加第二数据源(如oracle),会自动释放连接吗?

最近项目用了jfinal框架,主数据源是mysql,第二数据库源是oracle。发生一个很诡异的现象,主数据源mysql的增删改查内没有任何问题,项目中仅需要额外查询oracle数据库的一些资源,项目每次重启后能查询到数据,但是如果不操作等待一段时间后,再去查询就会一直阻塞在db.use("oracle-db").query()那,等待n秒后,后台会报connection holder is null,通过jstack dump发现线程阻塞在oracle获取连接那一步。10398B6D-A42D-4530-841E-ED4D1A8800A7.jpeg

评论区

JFinal

2018-07-12 16:44

jfinal 的所有数据库操作都是在 finally 块中关闭的 Connection,放心使用

奋斗的小健健

2018-07-13 14:56

@JFinal 波总好,主数据源应该是关闭的,但是第二数据源用的oracle,总是有这个问题!很奇怪了!如果不操作等待一段时间后,再去查询就会一直阻塞在db.use("oracle-db").query()那,等待n秒后又可以了!按照您的经验,这是oracle的问题还是druid的问题呢、

JFinal

2018-07-13 16:06

@奋斗的小健健 第二数据源 jfinal 也是在 finally 块中关闭的,肯定没事

应该是别的原因,例如网络延迟啥的

JFinal

2018-07-13 16:06

单步调试跟踪一下原因

奋斗的小健健

2018-07-13 17:18

@JFinal 很奇怪 延迟的话,现象很固定,使用一会就出现获取连接阻塞现象。代码调试的时候就是卡在db.use("oracle-db").find("xx")那段,然后就在那等待,最后弹出connection holder is null。我猜想是不是无法从oracle的druid连接池获取连接了,所以一直在等待获取连接,导致整个线程阻塞了

JFinal

2018-07-13 17:25

@奋斗的小健健 数据源换成 Druid

奋斗的小健健

2018-08-01 09:46

@JFinal 都是用的druid的数据源。

热门反馈

扫码入社