Closed slankka closed 6 years ago
有2中方法:
第一种方法:修改下DefaultDataSourceConfigureProvider的getDataSourceConfigure这个方法的代码由原来的DataSourceConfigure dataSourceConfigure = DataSourceConfigureLocatorManager.getInstance().getDataSourceConfigure(dbName);
修改成PoolPropertiesConfigure dataSourceConfigure = DataSourceConfigureLocatorManager.getInstance().getUserPoolPropertiesConfigure(dbName);
第二种共方法就是通过修改Dal.config,增加如下`
`即可。
从1.14.10到1.15.5我挨个都测试了一遍,统统都报“不能初始化连接池”,经调试根本原因就是出在DefaultDataSourceConfigureLocator这个类上的getDataSourceConfigure方法。里面提供了一个setConnectionStrings方法,但从来都没用过,但获取DataSourceConfigure的时候又多了一个判断: if (connectionStringConfigure == null) return null;从而导致DataSourceConfigure=null,可以简单如下修改:修改方法_getDataSourceConfigure:private DataSourceConfigure _getDataSourceConfigure(String name) { DataSourceConfigure configure = null; configure = dataSourceConfiguresCache.get(name); if (configure != null) { return configure; } ConnectionString connectionString = connectionStrings.get(name); if (connectionString == null) { configure = (DataSourceConfigure) this.getUserPoolPropertiesConfigure(name); } else { configure = mergeDataSourceConfigure(connectionString); } if (configure != null) { dataSourceConfiguresCache.put(name, configure); } return configure; }
核心变动点:
if (connectionString == null) {
configure = (DataSourceConfigure) this.getUserPoolPropertiesConfigure(name);
} else {
configure = mergeDataSourceConfigure(connectionString);
}
近期会修复这个问题,代码待合并。
master分支上的最新版已修复这个问题。
在启动页面设置数据库之后,连接测试通过,但是保存就报错,控制台都是NPE,初始化数据失败。 具体现象就是 #31 所描述。
dal-dao-gen的 classpath 内可以看到 页面输入的datasource,数据库连接信息,用户名密码都保存在datasource.xml,是否和程序设计的原则不符合?推测原本是存储连接池属性的,没有看到 datasource.properties 这个文件,或者是 jdbc.properties?
PropertyFileConnectionStringProvider 这个类只有测试用例在引用,推测用于解析上一步保存的文件,根据源码,文件应该叫做datasource.properties,但没有在 DataSourceConfigureParser / DefaultDataSourceConfigureLocator 等类中使用,没有看到解析ConnectionString 和 更新connectionStrings缓存 的相关代码。
非常感谢,很期待能够使用贵公司的DAL。