use of org.eweb4j.orm.jdbc.DataSourceWrap in project eweb4j-framework by laiweiwei.
the class DAOConfig method check.
public static synchronized String check() {
String error = null;
ConfigBean cb = (ConfigBean) SingleBeanCache.get(ConfigBean.class.getName());
if (cb == null)
return null;
DBInfoXmlFiles dbInfoXmlFiles = cb.getOrm().getDbInfoXmlFiles();
if (dbInfoXmlFiles == null)
return ConfigInfoCons.CANNOT_READ_CONFIG_FILE;
for (String filePath : dbInfoXmlFiles.getPath()) {
if (filePath == null || filePath.length() == 0)
continue;
File configFile = new File(ConfigConstant.CONFIG_BASE_PATH + filePath);
try {
XMLReader reader = BeanXMLUtil.getBeanXMLReader(configFile);
reader.setBeanName("dataSource");
reader.setClass("dataSource", DBInfoConfigBean.class);
DBInfoConfigBean dcb = reader.readOne();
if (dcb == null) {
error = rebuildXmlFile(configFile, ConfigInfoCons.REPAIR_FILE_INFO);
} else {
String error1 = CheckConfigBean.checkORMDBInfo(dcb, filePath);
if (error1 == null) {
if (DBInfoConfigBeanCache.get(dcb.getDsName()) == null) {
DBInfoConfigBeanCache.add(dcb.getDsName(), dcb);
}
DataSourceWrap dsw = null;
if (DataSourceWrapCache.containsKey(dcb.getDsName())) {
dsw = (DataSourceWrap) DataSourceWrapCache.get(dcb.getDsName());
if (dsw == null) {
DataSourceWrapCache.remove(dcb.getDsName());
log.debug("remove dsName->" + dcb.getDsName());
} else
log.debug("DataSource -> " + dcb.getDsName() + " is alive !");
}
if (dsw == null)
dsw = new DataSourceWrap(dcb.getDsName(), DataSourceCreator.create(dcb));
String error2 = dsw.getConnection() == null ? ConfigInfoCons.CANNOT_GET_DB_CON : null;
if (error2 != null)
if (error == null)
error = error2;
else
error += error2;
else {
String info = dcb.getDsName() + "." + ConfigInfoCons.READ_CONFIG_INFO_SUCCESS;
log.debug(info);
// 此步也是为了共存多个数据源
if (!DataSourceWrapCache.containsKey(dcb.getDsName())) {
log.debug("init put ds to cache...");
DataSourceWrapCache.put(dcb.getDsName(), dsw);
}
}
} else if (error == null)
error = error1;
else
error += error1;
}
} catch (Throwable e) {
e.printStackTrace();
error = rebuildXmlFile(configFile, CommonUtil.getExceptionString(e));
}
}
if (error != null)
DBInfoConfigBeanCache.clear();
return error;
}
Aggregations