动态配置了ActiveRecordPlugin,怎么获取删除?

子寒 发布于 2015/04/21 10:22
阅读 145
收藏 0
DruidPlugin ds = new DruidPlugin(acsUrl,acsuser,acspawd,acsdriver);
ds.start();
ActiveRecordPlugin arp = new ActiveRecordPlugin("module",ds);

arp.start();

我用上面的代码,配置了ActiveRecordPlugin,但是我需要切换使用的数据库文件,那我怎么删除这个ActiveRecordPlugin 和DruidPlugin 而重新配置?

又或者是,直接更改DruidPlugin的url?

@JFinal

加载中
0
糊搞

调用ActiveRecordPlugin和DruidPlugin的stop()方法,重新按新数据库配置构建DruidPluginActiveRecordPlugin两个插件。

注意,Config名不能使用之前已经用过的名字,不然会报重名异常。。。这是 @JFinal 作者波总没写好,DbKit方法中只有addConfig(),没有removeConfig()。

糊搞
回复 @子寒 : close()掉再使用是没有问题的,你用JDBC Connection close后修改连接参数再open试试就知道,你重用它就不会多余。不想重用就设置它=null就好。
子寒
子寒
回复 @糊搞 : close之后就不会多余了? close不是remove吧,能dispose掉?
糊搞
回复 @子寒 : 会有多余的Config,但ActiveRecordPlugin和DruidPlugin实例可以使用原来close()后的实例,这样就不会多余了。。。
子寒
子寒
那不就会有多余的plugin?
0
子寒
子寒
并且切换后,configname我希望是不变的
0
糊搞

引用来自“子寒”的评论

并且切换后,configname我希望是不变的
我刚看了ActiveRecordPlugin.start()源码:
if (config == null)
	config = new Config(configName, dataSource, dialect, showSql, devMode, transactionLevel, containerFactory, cache);
DbKit.addConfig(config);

只要不重新创建ActiveRecordPlugin实例,就会延用原来的configName。


0
子寒
子寒

@JFinal

有办法删除已配置的ActiveRecordPlugin和DruidPlugin吗?或者直接重置对应的数据库url

0
JFinal
JFinal

     试试将注入过去的那个 DruidPlugin 对先 dp.stop() 一次,然后再 dp.setXxxx(...) 重新配置一下,无法重新设置的用一下反射,然后再 dp.start() 一次即可。

    jfinal 2.0 提供了一个 DbKit.remove(configName) 方法,可以对 config 对象进行动态管理,这样就可以动态 druid.stop() 和重新创建了,并且 2.0 会在 ActiveRecordPlugin.stop() 时 DbKit.remove(configName) 掉所对应的 config 对象。

JFinal
JFinal
回复 @子寒 : 正开发
子寒
子寒
哦,2.0发布了吗?
返回顶部
顶部