Search in sources :

Example 1 with DataSourceWrap

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;
}
Also used : DataSourceWrap(org.eweb4j.orm.jdbc.DataSourceWrap) DBInfoConfigBean(org.eweb4j.orm.dao.config.bean.DBInfoConfigBean) CheckConfigBean(org.eweb4j.config.CheckConfigBean) DBInfoConfigBean(org.eweb4j.orm.dao.config.bean.DBInfoConfigBean) ConfigBean(org.eweb4j.config.bean.ConfigBean) File(java.io.File) XMLReader(org.eweb4j.util.xml.XMLReader) DBInfoXmlFiles(org.eweb4j.config.bean.DBInfoXmlFiles)

Aggregations

File (java.io.File)1 CheckConfigBean (org.eweb4j.config.CheckConfigBean)1 ConfigBean (org.eweb4j.config.bean.ConfigBean)1 DBInfoXmlFiles (org.eweb4j.config.bean.DBInfoXmlFiles)1 DBInfoConfigBean (org.eweb4j.orm.dao.config.bean.DBInfoConfigBean)1 DataSourceWrap (org.eweb4j.orm.jdbc.DataSourceWrap)1 XMLReader (org.eweb4j.util.xml.XMLReader)1