锁定老帖子 主题:我的处女贴:连接池释放连接异常!
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-11-29
DataSource是一个工厂,每次获取都要创建N个Connection,而你每次getConnection都返回一个新的DataSource,结果可想而知……
|
|
返回顶楼 | |
发表时间:2006-11-29
static ds
|
|
返回顶楼 | |
发表时间:2006-11-30
多谢“unifly”和“抛出异常的爱”的回复,看到大家一致的解决方案,我的这个帖子被踢到新手区也是理所当然的啦,我在想,是不是把DataSource再用一个单例类来管理,形成一个双精度的单例模式是不是应该要更好一些阿
|
|
返回顶楼 | |
发表时间:2006-11-30
理由何在?
|
|
返回顶楼 | |
发表时间:2006-11-30
deafwolf 写道 理由何在? 因为就算这个类已经是单例了,但是一个实例在多线程的情况下也有可能产生多个DataSource对象吧。
|
|
返回顶楼 | |
发表时间:2006-11-30
多线程你加锁啊,再包一层就能处理多线程么 |
|
返回顶楼 | |
发表时间:2006-11-30
方法一用单例..
方法二用池 才能不溢出 PS:你用的单例是错的... |
|
返回顶楼 | |
发表时间:2006-11-30
抛出异常的爱 写道 方法一用单例..
单例是错的??呵呵,那就请给兄弟一点明示了
方法二用池 才能不溢出 PS:你用的单例是错的... |
|
返回顶楼 | |
发表时间:2006-11-30
deafwolf 写道 抱歉,我没从你的代码中看出单态的所在
对于公用的连接类,单态的应该是类里的DS,而不是对这个类加锁 public class ConnManager{ private static DataSource dataSource=null; private ConnManager(){}; public static Connection getConnection(){ if(dataSource==null){ dataSource=...; } return dataSource.getConnection(); } } 这个是正确的单例... 单例特点 1static DataSource (静态变量) 2 private ConnManager(){};(私有构造器) 3 public static Connection getConnection(静态公开的得到连接的方法) |
|
返回顶楼 | |