论坛首页 Java企业应用论坛

如何截获JBoss的数据源?

浏览 7889 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-01-02  
近来接手一个旧项目,发现有时会出现连接找不到的异常,很显然是因为某个地方没有正确释放数据库连接造成。我打算使用代理数据源的方法,然后代理connection、代理statement,一直找到没有释放连接的地方和所执行的sql语句。
现在的问题是,我的服务器是jboss,使用jboss的连接池,如何截获这些连接池并进行代理,我还没有想到很好的方法。
(可能我的表述不是很好,不过大致就是这样)
   发表时间:2007-01-02  
liangguanhui 写道
近来接手一个旧项目,发现有时会出现连接找不到的异常,很显然是因为某个地方没有正确释放数据库连接造成。我打算使用代理数据源的方法,然后代理connection、代理statement,一直找到没有释放连接的地方和所执行的sql语句。
现在的问题是,我的服务器是jboss,使用jboss的连接池,如何截获这些连接池并进行代理,我还没有想到很好的方法。
(可能我的表述不是很好,不过大致就是这样)


未必是没有释放数据库连接造成的。如果是这样,你直接监控数据库服务器就可以看出来。用不着在连接池上动手脚。
0 请登录后投票
   发表时间:2007-01-02  
关键是我没有数据库管理的权限
0 请登录后投票
   发表时间:2007-01-02  
如果是用tomcat的DBCP连接池,他有参数可以设置,以自动监测未释放的链接。不知道JBOSS的连接池有没有类似的特性。
0 请登录后投票
   发表时间:2007-03-22  
DBCP千万不能用,我们上线的项目有几个发现都是DBCP造成死锁引起系统down机(thread dump)
0 请登录后投票
   发表时间:2007-03-22  
我也遇到这种问题

解决这个问题是在太搞了,问题有可能要1天2天才出现,用代理的方法根本行不同,因为你根本不知道别人到底在什么地方获取这个Connection,而且jboss连接池如果设置了超时是不会有这样的问题的,有可能的只是有人没从连接池拿对象,而是自己直接拿的,用完后又没关!同时代理是针对接口,如果大家从同1个接口拿connection就不会有你刚才的问题,你代理下来也没用(而且代理你也捕获不到什么有用的信息,还是得写log). 我当时是把log等级调大,从info的log开始写,等问题出现后去查log,然后翻代码?
0 请登录后投票
   发表时间:2007-03-22  
我现在是这样,把所有地方的获取Connection都统一起来,然后用代理。
0 请登录后投票
   发表时间:2007-03-22  

用代理的方法根本行不同,因为你根本不知道别人到底在什么地方获取这个 Connection,而且jboss连接池如果设置了超时是不会有这样的问题的,有可能的只是有人没从连接池拿对象,而是自己直接拿的,用完后又没关! 同时代理是针对接口,如果大家从同1个接口拿connection就不会有你刚才的问题,你代理下来也没用(而且代理你也捕获不到什么有用的信息,还是得写log). 我当时是把log等级调大,从info的log开始写,等问题出现后去查log,然后翻代码?
0 请登录后投票
   发表时间:2007-03-22  
我的思路如下:

(1)把所有获取Connection的地方都统一起来,从同一个入口获取。这一步比价浪费事件

(2)构造代理。我的代理是这样的,代理从连接池里获取的Connection,在这个Connection的close方法做标记,然后检测一定事件后(我是设了10秒)还没有执行close方法的connection。

(3)至于从这个connection里怎样得到有用的信息,那就各位自由发挥了,我是构造了一个Exception,然后输出他的stack,并且代理他的Statement和PreparedStatement,输出它执行过的SQL语句。
0 请登录后投票
   发表时间:2007-03-22  
我觉得你这个方法可能找不到问题得所在!

1:如果所有得程序从同一个接口获取Connection,并且你这个接口得实现是从连接池获取,只要你得pool设置了超时,那么jboss会维护这个池里面得对象,对于超过时间得连接会自动关闭,然后刷新连接池!

所以你代理这个接口是没有意义得!由于我遇到过这个问题!


而且连接不被释放也不一定是程序得问题!还有下面得原因会引起!!!


容器处理一个很长得request响应,导致数据库挂掉
连接池设置不当,导致连接被clone!
超时时间设置得太短等!
程序中长响应比较多
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics