多数据源的情况,没有找到关闭数据源的方法

iehyou 发布于 2014/08/07 16:30
阅读 225
收藏 0

@JFinal 你好,想跟你请教个问题:

在实际情况下:需要链接到另外一个数据库查询一些数据库

参考手册写了简单查询的方法

public List<Object> query(String sql){
DruidPluginExt druidPlugin = null;
ActiveRecordPlugin arp = null;
try{
druidPlugin = new DruidPluginExt(
getProperty(GlobalConstant.PI.PROJECT_DBURL),
getProperty(GlobalConstant.PI.PROJECT_DBUSER),
getProperty(GlobalConstant.PI.PROJECT_DBPWD),
Dbms.mysql);
druidPlugin.start();
       arp = new ActiveRecordPlugin(PROJECT_DB_CONFIG,druidPlugin);
       arp.start();
       List<Object> objects = Db.use(PROJECT_DB_CONFIG).query(sql);
       return objects;
}finally{
if(druidPlugin!=null){
druidPlugin.stop();
}
if(arp!=null){
arp.stop();
}
}
}

druidPlugin和arp都已经全部stop,但是该代码第二次执行 提示 Config already exists:XXXX,看了源码,发现DbKit没有删除config的方法,且该类是final,没法用重载来解决。

这种情况应该如何处理?

主要是这个数据库连接池不是经常用,没有必要保存一个连接池,就想用的时候开,现在没有解决方法,先不调用if(druidPlugin!=null){
druidPlugin.stop();
}
if(arp!=null){
arp.stop();
},将就用下


加载中
0
糊搞
为什么要这样做呀,直接JDBC查询不就行了吗,不需要用 ActiveRecorder呀~~~这样做反而复杂了。。。
0
iehyou
iehyou

引用来自“糊搞”的评论

为什么要这样做呀,直接JDBC查询不就行了吗,不需要用 ActiveRecorder呀~~~这样做反而复杂了。。。
呵呵 这我知道, 但是直接jdbc又要封装一遍,累。。。。我以为 ActiveRecordPlugin.stop方法将会移除config的。但是看源码是没有的
0
糊搞

引用来自“iehyou”的评论

引用来自“糊搞”的评论

为什么要这样做呀,直接JDBC查询不就行了吗,不需要用 ActiveRecorder呀~~~这样做反而复杂了。。。
呵呵 这我知道, 但是直接jdbc又要封装一遍,累。。。。我以为 ActiveRecordPlugin.stop方法将会移除config的。但是看源码是没有的

你开个DruidPlugin,默认会开户多个连接,因为Druid是连接池,直接影响性能。

如果使用JDBC,只会开启一个,而且调用时只需取得Connection即可,Driver可做成静态。如果调用非常频繁,Connection都可做成静态。。。

返回顶部
顶部