Weblogic自带的连接池问题!!【关于连接泄漏】!!怪!!!急!!!

时间:2023-01-26 04:25:07
我用的Weblogic自带的连接池,有时候提示我连接泄漏:
<2005-6-20 下午20时08分20秒 CST> <Warning> <JDBC> <BEA-001074> <A JDBC pool conn
ection leak was detected. A connection leak occurs when a connection obtained fr
om the pool was not closed explicitly by calling close() and then was disposed b
y the garbage collector and returned to the connection pool. The following stack
 trace at create shows where the leaked connection was created.  [Null exception
 passed, creating stack trace for offending caller]
        at weblogic.utils.StackTraceUtils.throwable2StackTrace(StackTraceUtils.j
ava:28)
        at weblogic.jdbc.wrapper.PoolConnection.finalize(PoolConnection.java:77)

        at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
        at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
        at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)
>
说我有个地方没有关闭,但我查了所有的程序都没有发现没有关闭。
我用在try-catch-finally中的finally关闭的。
有的时候,这个警告在循环中出现:就是当我定义一个
ResultSet set = dbfunction.executeQuery(selectText);
时候在循环:
while(set.next()) {
………………
………………
}
出现。而且有的时候,我在Weblogic中Redeploy时候也出现异常。还有更怪的是,有时候,运行时,没有操作,突然跳出异常!!!!怪!!!

15 个解决方案

#1


关注一下
除了con,statement,rs是不是都关闭了?

#2


都关闭了,但还是出现异常!!!

#3


没遇到过,帮你顶!

#4


我有的是8.12没有遇到过这些问题,我想应该是程序某个地方出异常了吧,仔细调试一下试试

#5


调试了好长时间了,但还是有问题啊,我用的是weblogic 8.1。
不知道为什么!!!

#6


刚在8.12 下测试,如果有意不关conn 就会出现你所描述的问题了,关闭则没有,应该是程序的问题,从打开到关闭看一遍应该就可以找出来了吧

#7


但是在循环中怎么还会出现这样的错误呢??

#8


你要好好看一下ResultSet 也是需要释放空间的,
你在使用完了吧ResultSet 管了就行了

#9


在循环
while(set.next()) {
………………
………………
}
中出现上述警告,还在用呢,怎么能关呢!
循环后才能关闭啊!

#10


感觉用jdbc的话,一定要判断好,是不是到表尾了,用rs.next()肯定要异常的(至少连接ACESS)是这样,没得救的。别的数据库不清楚!

我一般都是先计算有多少记录,然后再做循环的。。

#11


我的异常还没有到表尾就出现警告了!!!

#12


我用的weblogic 也出现这个问题了

但是没有找到没有close的东西

#13


我这里也是的,不知道为什么!急!!!

#14


我猜想是不是程序某个地方在异常处理中没有关闭数据库链接,那么就会每出现一次异常就泄漏一个链接。你可以使用FINALLY。

#15


我已经在finally中关闭了!
问题解决了,问题出在当一个页面两次调用执行语句时候,第一次只关闭了stmt,
而没有关闭con,第二次才关闭con。
呵呵……
谢谢各位了!!!

#1


关注一下
除了con,statement,rs是不是都关闭了?

#2


都关闭了,但还是出现异常!!!

#3


没遇到过,帮你顶!

#4


我有的是8.12没有遇到过这些问题,我想应该是程序某个地方出异常了吧,仔细调试一下试试

#5


调试了好长时间了,但还是有问题啊,我用的是weblogic 8.1。
不知道为什么!!!

#6


刚在8.12 下测试,如果有意不关conn 就会出现你所描述的问题了,关闭则没有,应该是程序的问题,从打开到关闭看一遍应该就可以找出来了吧

#7


但是在循环中怎么还会出现这样的错误呢??

#8


你要好好看一下ResultSet 也是需要释放空间的,
你在使用完了吧ResultSet 管了就行了

#9


在循环
while(set.next()) {
………………
………………
}
中出现上述警告,还在用呢,怎么能关呢!
循环后才能关闭啊!

#10


感觉用jdbc的话,一定要判断好,是不是到表尾了,用rs.next()肯定要异常的(至少连接ACESS)是这样,没得救的。别的数据库不清楚!

我一般都是先计算有多少记录,然后再做循环的。。

#11


我的异常还没有到表尾就出现警告了!!!

#12


我用的weblogic 也出现这个问题了

但是没有找到没有close的东西

#13


我这里也是的,不知道为什么!急!!!

#14


我猜想是不是程序某个地方在异常处理中没有关闭数据库链接,那么就会每出现一次异常就泄漏一个链接。你可以使用FINALLY。

#15


我已经在finally中关闭了!
问题解决了,问题出在当一个页面两次调用执行语句时候,第一次只关闭了stmt,
而没有关闭con,第二次才关闭con。
呵呵……
谢谢各位了!!!