Package com.taobao.datasource

Source Code of com.taobao.datasource.TaobaoDataSourceFactory

/*(C) 2007-2012 Alibaba Group Holding Limited. 
*This program is free software; you can redistribute it and/or modify 
*it under the terms of the GNU General Public License version 2 as 
* published by the Free Software Foundation. 
* Authors: 
*   junyu <junyu@taobao.com> , shenxun <shenxun@taobao.com>, 
*   linxuan <linxuan@taobao.com> ,qihao <qihao@taobao.com>  
*/ 
package com.taobao.datasource;

import org.apache.commons.lang.StringUtils;

import com.taobao.datasource.resource.adapter.jdbc.local.LocalTxDataSource;
import com.taobao.datasource.resource.connectionmanager.CachedConnectionManager;
import com.taobao.datasource.resource.security.SecureIdentityLoginModule;
import com.taobao.datasource.tm.TxManager;

/**����Դ���������࣬�ṩ����Դ�Ĵ���������
* @author qihao
*
*/
public class TaobaoDataSourceFactory {
 
  private static final LoginConfigFinder loginConfigFinder = new LoginConfigFinder();
 
  private static final TxManager defaultTransactionManager = TxManager.getInstance();
 
  private static final CachedConnectionManager defaultCachedConnectionManager = new CachedConnectionManager();
 
  public static LocalTxDataSource createLocalTxDataSource(LocalTxDataSourceDO dataSourceDO) throws Exception{
    return TaobaoDataSourceFactory.createLocalTxDataSource(dataSourceDO,null,null);
  }
 
  public static LocalTxDataSource createLocalTxDataSource(LocalTxDataSourceDO dataSourceDO,TxManager transactionManager,CachedConnectionManager cachedConnectionManager) throws Exception{
    if(null==dataSourceDO){
      throw new Exception("dataSource config is Empty!");
    }
    LocalTxDataSource localTxDataSource = new LocalTxDataSource();
    //�������ӻ�������������������ʹ�ø����ģ����ûָ����Ĭ�ϸ�һ��
    if(null!=cachedConnectionManager){
      localTxDataSource.setCachedConnectionManager(cachedConnectionManager);
    }else{
      localTxDataSource.setCachedConnectionManager(defaultCachedConnectionManager);
    }
    //������������������������ʹ�ø����ģ����û����Ĭ�ϸ��Ը�
    if(null!=transactionManager){
      localTxDataSource.setTransactionManager(transactionManager);
    }else{
      localTxDataSource.setTransactionManager(defaultTransactionManager);
    }
    localTxDataSource.setBeanName(dataSourceDO.getJndiName());
    localTxDataSource.setUseJmx(dataSourceDO.isUseJmx());
    localTxDataSource.setBackgroundValidation(dataSourceDO.isBackgroundValidation());
    localTxDataSource.setBackGroundValidationMinutes(dataSourceDO.getBackgroundValidationMinutes());
    localTxDataSource.setBlockingTimeoutMillis(dataSourceDO.getBlockingTimeoutMillis());
    localTxDataSource.setCheckValidConnectionSQL(dataSourceDO.getCheckValidConnectionSQL());
    localTxDataSource.setConnectionProperties(dataSourceDO.getConnectionProperties());
    localTxDataSource.setConnectionURL(dataSourceDO.getConnectionURL());
    localTxDataSource.setDriverClass(dataSourceDO.getDriverClass());
    localTxDataSource.setExceptionSorterClassName(dataSourceDO.getExceptionSorterClassName());
    localTxDataSource.setIdleTimeoutMinutes(dataSourceDO.getIdleTimeoutMinutes());
    localTxDataSource.setMaxSize(dataSourceDO.getMaxPoolSize());
    localTxDataSource.setMinSize(dataSourceDO.getMinPoolSize());
    localTxDataSource.setNewConnectionSQL(dataSourceDO.getNewConnectionSQL());
    localTxDataSource.setNoTxSeparatePools(dataSourceDO.isNoTxSeparatePools());
    localTxDataSource.setPassword(dataSourceDO.getPassword());
    localTxDataSource.setPrefill(dataSourceDO.isPrefill());
    localTxDataSource.setPreparedStatementCacheSize(dataSourceDO.getPreparedStatementCacheSize());
    localTxDataSource.setQueryTimeout(dataSourceDO.getQueryTimeout());
    localTxDataSource.setSharePreparedStatements(dataSourceDO.isSharePreparedStatements());
    localTxDataSource.setTrackStatements(dataSourceDO.getTrackStatements());
    localTxDataSource.setTransactionIsolation(dataSourceDO.getTransactionIsolation());
    localTxDataSource.setTxQueryTimeout(dataSourceDO.isTxQueryTimeout());
    localTxDataSource.setUseFastFail(dataSourceDO.isUseFastFail());
    localTxDataSource.setUserName(dataSourceDO.getUserName());
    localTxDataSource.setValidateOnMatch(dataSourceDO.isValidateOnMatch());
    localTxDataSource.setValidConnectionCheckerClassName(dataSourceDO.getValidConnectionCheckerClassName());
    //���ð�ȫ��
    String securityDomainName = dataSourceDO.getSecurityDomain();
    if (StringUtils.isNotBlank(securityDomainName)) {
      SecureIdentityLoginModule securityDomain = loginConfigFinder
          .get(securityDomainName);
      if (securityDomain != null) {
        localTxDataSource.setSecurityDomain(securityDomain);
      }
    }
    localTxDataSource.setCriteria(dataSourceDO.getCriteria());
    //��ʼ������Դ
    localTxDataSource.init();
    return localTxDataSource;
  }
 
  public static void destroy(LocalTxDataSource localTxDataSource) throws Exception {
    if(null!=localTxDataSource){
      localTxDataSource.destroy();
    }
  }
}
TOP

Related Classes of com.taobao.datasource.TaobaoDataSourceFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.