jfinal 多数据源问题

最近在自己动态添加数据源,也已经添加成功,但是现在遇到的问题是,我想关闭废弃的数据源怎么办呢?昨天在群里提问过,需要自己管理数据源的,但我发现我只能从config里面删除某个数据源的配置,但似乎不能在删除之前先关闭这个数据源.如下图:blob.png

评论区

JFinal

2017-03-16 12:11

升级到 jfinal 3.0,这个版本对数据源的自由管理有很大的增强,然后在删除数据源之前建议先调用数据源相关插件的 stop() 方法回收资源

如果数据源是被传入到了 ActiveRecordPlugin 对象的,那么调用该对象的 stop() 方法时,可自动删除该数据源的配置,这个是 ActiveRecordPlugin.stop() 方法中自动处理的,可以看一下相关源码

老五

2017-03-16 15:42

@JFinal 发现回复里面不能上传图片了。
看了波总的回复,我就去看了一下3.0的手册,看的介绍没有看到自由管理这一块,可能是没看的深入。然后就在现有的版本2.2的版本上对源码进行了一个修改,我主要的问题就是我有多个数据源的插件,但我关闭的时候,我没办法很知道我想要的插件,插件都是在加载的时候放到一个list集合里面去了.所以我就在Plugins的类里面新增一个map的集合,key就是数据源的名字,这样子我就可以通过名字去找到对应的数据源插件,然后再调用stop的方法,这样子是我目前想到最小改动源码的方式实现我想要的效果.^_^
等于现在我的应用里面就会有两个地方保存插件,一个就是jfinal本身在初始化的时候使用的插件,一个是我自己后期自行添加的插件,并自行管理这些插件的生命周期.
本想上个代码给波总看看的,现在不知道得去哪分享了.汗哒哒

JFinal

2017-03-16 15:47

对数据源的自由管理主要就是 DbKit.addConfig(...) DbKit.removeConfig(...)这两个方法,而 Config 对象中持有一个数据源

实现功能就好,有时间建议看看源代码,这一块的代码量并不大

老五

2017-03-16 15:56

@JFinal 嗯嗯,就是看了一部分源码,才想到现在的方式的。

不能忍受

2018-03-22 19:33

@JFinal 波总 多数据源链接两个sqlserver数据库 会报 recyle error
com.microsoft.sqlserver.jdbc.SQLServerException: 该连接已关闭。@Test
public void modelTest() {
System.out.println(System.currentTimeMillis());
try {
TmbtProvince list = TmbtProvince.dao.findById(1);
System.out.println(JsonKit.toJson(list));
} catch (Exception e) {
System.out.println(System.currentTimeMillis());
}

BoOmBfbljzM bobm = BoOmBfbljzM.dao.findById(1427194);
System.out.println(JsonKit.toJson(bobm));
}

JFinal

2018-03-22 22:04

@不能忍受 换个 sqlserver 驱动试试,然后 druid 也换成新版本民

不能忍受

2018-03-22 22:51

@JFinal 换到sqlserver42 druid1.1.9 还是这个问题

不能忍受

2018-03-22 22:52

@JFinal 后加载的数据源可以查出数据 main不可以 说是提前关闭了连接

热门反馈

扫码入社