你在close之前要判断一下 con != null
解决方案 »
- 寻找知情人士,字面值整数常量类型问题
- 二进制文件数据怎么用java读取
- 谁用过ireport+jasperreport做报表
- 怎样橡皮筋画线,窗口不闪
- 用Java获取文章的标题
- j2se开发蓝牙程序
- 我在做东西的时候遇到几个问题,请大家帮忙解决~~
- jb8编译时总是create archive要多占时间,当初建立工程时忘改成不用“create archive”了,现在还有办法吗?
- 在Jbuilder中,如何设置一个按钮的初始位置以及初始化按钮的大小?
- javadoc!
- try catch finally
- 没有.h文件的情况下用java调用dll,而且这个dll是别人用jni做的,有可以调用这个dll的java类,但是该类没有package
我在使用Weblogic的Oracle的连接池的时候,记得Oracle的实现上有这样一个设置,即给一个测试语句来测试数据库连接。一般都用 select 1 from dual 。 另外还有一个设置就是多长时间检测一次。一般设置15分钟。
也就是说Oracle的实现的方法,会自动定期用这个语句去检测数据库的连接。一旦检测到连接失败,就关闭连接并重新建立连接。
因此我建议楼主可以考虑这样的机制。毕竟网络连接是完全有可能断开的。我碰到的实际例子如下:
Web服务器与数据库之间有一个安全防火墙,这个防火墙会定期检查连接,如果某个连接长时间(30分钟)没有数据流过,就会被关闭。这种关闭使得检测连接还是打开的,却不能执行sql语句。但是如果连接一直有数据流动,就不会被关闭。
设置定期检测后,比较好解决了这个问题。我估计楼主可能也有类似情况。为什么你的连接第二天被关闭了,是不是晚上的数据流动没有了。早上就关闭了。
但是连接池的作用,是为了减轻系统由于频繁的获取和释放连接所豪的资源的。那在getConnection()中加了测试语句,就是每次从连接池中取连接都要先执行一下sql语句,那么这样岂不是又增加了数据库的负担?看来是一对矛盾了。郁闷ing