package com.alipay.zdal.dstest.utils; import java.sql.Connection; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import javax.sql.DataSource; import org.apache.log4j.Logger; import com.alipay.zdal.datasource.LocalTxDataSourceDO; import com.alipay.zdal.datasource.ZDataSource; public class ZDSFactory { private Logger logger = Logger.getLogger(ZDSFactory.class.getName()); private int length = 20; private LocalTxDataSourceDO localTxDataSourceDO_0 = new LocalTxDataSourceDO(); private LocalTxDataSourceDO localTxDataSourceDO_1 = new LocalTxDataSourceDO(); private LocalTxDataSourceDO localTxDataSourceDO_2 = new LocalTxDataSourceDO(); private LocalTxDataSourceDO localTxDataSourceDO_3 = new LocalTxDataSourceDO(); private LocalTxDataSourceDO localTxDataSourceDO_4 = new LocalTxDataSourceDO(); private LocalTxDataSourceDO localTxDataSourceDO_5 = new LocalTxDataSourceDO(); private String[] jndinames = {"DataSource-Oracle","DataSource-Mysql","DataSource-MysqlChange","DataSource-MysqlAPP","DataSource-invalid","DataSource-OracleChange"}; private ZDataSource[] zDataSources = new ZDataSource[length]; public ZDSFactory(){ localTxDataSourceDO_0.setBackgroundValidation(false); localTxDataSourceDO_0.setBackgroundValidationMinutes(10); localTxDataSourceDO_0.setBlockingTimeoutMillis(2000); localTxDataSourceDO_0.setCheckValidConnectionSQL("SELECT 1 from dual"); localTxDataSourceDO_0.setConnectionURL("jdbc:oracle:thin:@perf6.lab.alipay.net:1521:perfdb6"); localTxDataSourceDO_0.setDriverClass("oracle.jdbc.OracleDriver"); try { localTxDataSourceDO_0.setEncPassword("-7cda29b2eef25d0e"); } catch (Exception e) { logger.error(e); } localTxDataSourceDO_0.setExceptionSorterClassName("com.alipay.zdatasource.resource.adapter.jdbc.vendor.OracleExceptionSorter"); localTxDataSourceDO_0.setIdleTimeoutMinutes(30); localTxDataSourceDO_0.setMaxPoolSize(12); localTxDataSourceDO_0.setMinPoolSize(6); localTxDataSourceDO_0.setNewConnectionSQL("SELECT 1 from dual"); localTxDataSourceDO_0.setPrefill(false); localTxDataSourceDO_0.setPreparedStatementCacheSize(100); localTxDataSourceDO_0.setQueryTimeout(180); localTxDataSourceDO_0.setSharePreparedStatements(false); localTxDataSourceDO_0.setTxQueryTimeout(false); localTxDataSourceDO_0.setTransactionIsolation("TRANSACTION_READ_COMMITTED"); localTxDataSourceDO_0.setUserName("ACM"); localTxDataSourceDO_0.setUseFastFail(false); localTxDataSourceDO_0.setValidateOnMatch(false); localTxDataSourceDO_0.setValidConnectionCheckerClassName("com.alipay.zdatasource.resource.adapter.jdbc.vendor.OracleValidConnectionChecker"); localTxDataSourceDO_0.setDsName("ds"); try { zDataSources[0] = new ZDataSource(localTxDataSourceDO_0); } catch (Exception e) { logger.error(e); } localTxDataSourceDO_1.setBackgroundValidation(false); localTxDataSourceDO_1.setBackgroundValidationMinutes(10); localTxDataSourceDO_1.setBlockingTimeoutMillis(2000); localTxDataSourceDO_1.setCheckValidConnectionSQL("SELECT 1 from dual"); localTxDataSourceDO_1.setConnectionURL("jdbc:mysql://mysql-1-2.bjl.alipay.net:3306/zds1"); localTxDataSourceDO_1.setDriverClass("com.mysql.jdbc.Driver"); try { localTxDataSourceDO_1.setEncPassword("-76079f94c1e11c89"); } catch (Exception e) { logger.error(e); } localTxDataSourceDO_1.setExceptionSorterClassName("com.alipay.zdatasource.resource.adapter.jdbc.vendor.MySQLExceptionSorter"); localTxDataSourceDO_1.setIdleTimeoutMinutes(30); localTxDataSourceDO_1.setMaxPoolSize(12); localTxDataSourceDO_1.setMinPoolSize(6); localTxDataSourceDO_1.setNewConnectionSQL("SELECT 1 from dual"); localTxDataSourceDO_1.setPrefill(false); localTxDataSourceDO_1.setPreparedStatementCacheSize(100); localTxDataSourceDO_1.setQueryTimeout(180); localTxDataSourceDO_1.setSharePreparedStatements(false); localTxDataSourceDO_1.setTxQueryTimeout(false); localTxDataSourceDO_1.setTransactionIsolation("TRANSACTION_READ_COMMITTED"); localTxDataSourceDO_1.setUserName("mysql"); localTxDataSourceDO_1.setUseFastFail(false); localTxDataSourceDO_1.setValidateOnMatch(false); localTxDataSourceDO_1.setValidConnectionCheckerClassName("com.alipay.zdatasource.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker"); localTxDataSourceDO_1.setDsName("ds"); try { zDataSources[1] = new ZDataSource(localTxDataSourceDO_1); } catch (Exception e) { logger.error(e); } localTxDataSourceDO_2.setBackgroundValidation(false); localTxDataSourceDO_2.setBackgroundValidationMinutes(10); localTxDataSourceDO_2.setBlockingTimeoutMillis(2000); localTxDataSourceDO_2.setCheckValidConnectionSQL("SELECT 1 from dual"); localTxDataSourceDO_2.setConnectionURL("jdbc:mysql://mysql-1-2.bjl.alipay.net:3306/zds2"); localTxDataSourceDO_2.setDriverClass("com.mysql.jdbc.Driver"); try { localTxDataSourceDO_2.setEncPassword("-76079f94c1e11c89"); } catch (Exception e) { logger.error(e); } localTxDataSourceDO_2.setExceptionSorterClassName("com.alipay.zdatasource.resource.adapter.jdbc.vendor.MySQLExceptionSorter"); localTxDataSourceDO_2.setIdleTimeoutMinutes(30); localTxDataSourceDO_2.setMaxPoolSize(12); localTxDataSourceDO_2.setMinPoolSize(6); localTxDataSourceDO_2.setNewConnectionSQL("SELECT 1 from dual"); localTxDataSourceDO_2.setPrefill(false); localTxDataSourceDO_2.setPreparedStatementCacheSize(100); localTxDataSourceDO_2.setQueryTimeout(180); localTxDataSourceDO_2.setSharePreparedStatements(false); localTxDataSourceDO_2.setTxQueryTimeout(false); localTxDataSourceDO_2.setTransactionIsolation("TRANSACTION_READ_COMMITTED"); localTxDataSourceDO_2.setUserName("mysql"); localTxDataSourceDO_2.setUseFastFail(false); localTxDataSourceDO_2.setValidateOnMatch(false); localTxDataSourceDO_2.setValidConnectionCheckerClassName("com.alipay.zdatasource.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker"); localTxDataSourceDO_2.setDsName("ds"); try { zDataSources[2] = new ZDataSource(localTxDataSourceDO_2); } catch (Exception e){ logger.error(e); } localTxDataSourceDO_3.setBackgroundValidation(false); localTxDataSourceDO_3.setBackgroundValidationMinutes(10); localTxDataSourceDO_3.setBlockingTimeoutMillis(2000); localTxDataSourceDO_3.setCheckValidConnectionSQL("SELECT 1 from dual"); localTxDataSourceDO_3.setConnectionURL("jdbc:mysql://mysql-1-2.bjl.alipay.net:3306/zds1"); localTxDataSourceDO_3.setDriverClass("com.mysql.jdbc.Driver"); try { localTxDataSourceDO_3.setEncPassword("-76079f94c1e11c89"); } catch (Exception e) { logger.error(e); } localTxDataSourceDO_3.setExceptionSorterClassName("com.alipay.zdatasource.resource.adapter.jdbc.vendor.MySQLExceptionSorter"); localTxDataSourceDO_3.setIdleTimeoutMinutes(30); localTxDataSourceDO_3.setMaxPoolSize(12); localTxDataSourceDO_3.setMinPoolSize(6); localTxDataSourceDO_3.setNewConnectionSQL("SELECT 1 from dual"); localTxDataSourceDO_3.setPrefill(false); localTxDataSourceDO_3.setPreparedStatementCacheSize(100); localTxDataSourceDO_3.setQueryTimeout(180); localTxDataSourceDO_3.setSharePreparedStatements(false); localTxDataSourceDO_3.setTxQueryTimeout(false); localTxDataSourceDO_3.setTransactionIsolation("TRANSACTION_READ_COMMITTED"); localTxDataSourceDO_3.setUserName("mysql"); localTxDataSourceDO_3.setUseFastFail(false); localTxDataSourceDO_3.setValidateOnMatch(false); localTxDataSourceDO_3.setValidConnectionCheckerClassName("com.alipay.zdatasource.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker"); localTxDataSourceDO_3.setDsName("ds"); try { zDataSources[3] = new ZDataSource(localTxDataSourceDO_3); } catch (Exception e) { logger.error(e); } localTxDataSourceDO_4.setBackgroundValidation(false); localTxDataSourceDO_4.setBackgroundValidationMinutes(10); localTxDataSourceDO_4.setBlockingTimeoutMillis(2000); localTxDataSourceDO_4.setCheckValidConnectionSQL("SELECT 1 from dual"); localTxDataSourceDO_4.setConnectionURL("jdbc:mysql:///mysql-1-2.bjl.alipay.net:3306/invalid"); localTxDataSourceDO_4.setDriverClass("com.mysql.jdbc.Driver"); try { localTxDataSourceDO_4.setEncPassword("-76079f94c1e11c89"); } catch (Exception e) { logger.error(e); } localTxDataSourceDO_4.setExceptionSorterClassName("com.alipay.zdatasource.resource.adapter.jdbc.vendor.MySQLExceptionSorter"); localTxDataSourceDO_4.setIdleTimeoutMinutes(30); localTxDataSourceDO_4.setMaxPoolSize(12); localTxDataSourceDO_4.setMinPoolSize(6); localTxDataSourceDO_4.setNewConnectionSQL("SELECT 1 from dual"); localTxDataSourceDO_4.setPrefill(false); localTxDataSourceDO_4.setPreparedStatementCacheSize(100); localTxDataSourceDO_4.setQueryTimeout(180); localTxDataSourceDO_4.setSharePreparedStatements(false); localTxDataSourceDO_4.setTxQueryTimeout(false); localTxDataSourceDO_4.setTransactionIsolation("TRANSACTION_READ_COMMITTED"); localTxDataSourceDO_4.setUserName("mysql"); localTxDataSourceDO_4.setUseFastFail(false); localTxDataSourceDO_4.setValidateOnMatch(false); localTxDataSourceDO_4.setValidConnectionCheckerClassName("com.alipay.zdatasource.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker"); localTxDataSourceDO_4.setDsName("ds"); try { zDataSources[4] = new ZDataSource(localTxDataSourceDO_4); } catch (Exception e) { logger.error(e); } localTxDataSourceDO_5.setBackgroundValidation(false); localTxDataSourceDO_5.setBackgroundValidationMinutes(10); localTxDataSourceDO_5.setBlockingTimeoutMillis(2000); localTxDataSourceDO_5.setCheckValidConnectionSQL("SELECT 1 from dual"); localTxDataSourceDO_5.setConnectionURL("jdbc:oracle:thin:@perf6.lab.alipay.net:1521:perfdb6"); localTxDataSourceDO_5.setDriverClass("oracle.jdbc.OracleDriver"); try { localTxDataSourceDO_5.setEncPassword("-7cda29b2eef25d0e"); } catch (Exception e) { logger.error(e); } localTxDataSourceDO_5.setExceptionSorterClassName("com.alipay.zdatasource.resource.adapter.jdbc.vendor.OracleExceptionSorter"); localTxDataSourceDO_5.setIdleTimeoutMinutes(30); localTxDataSourceDO_5.setMaxPoolSize(12); localTxDataSourceDO_5.setMinPoolSize(6); localTxDataSourceDO_5.setNewConnectionSQL("SELECT 1 from dual"); localTxDataSourceDO_5.setPrefill(false); localTxDataSourceDO_5.setPreparedStatementCacheSize(100); localTxDataSourceDO_5.setQueryTimeout(180); localTxDataSourceDO_5.setSharePreparedStatements(false); localTxDataSourceDO_5.setTxQueryTimeout(false); localTxDataSourceDO_5.setTransactionIsolation("TRANSACTION_READ_COMMITTED"); localTxDataSourceDO_5.setUserName("ACM1"); localTxDataSourceDO_5.setUseFastFail(false); localTxDataSourceDO_5.setValidateOnMatch(false); localTxDataSourceDO_5.setValidConnectionCheckerClassName("com.alipay.zdatasource.resource.adapter.jdbc.vendor.OracleValidConnectionChecker"); localTxDataSourceDO_5.setDsName("ds"); try { zDataSources[5] = new ZDataSource(localTxDataSourceDO_5); } catch (Exception e) { logger.error(e); } } /** * * @param index ��ӦzDataSources[]���±� * @return */ public ZDataSource getZdataSouceByIndex(int index){ return zDataSources[index]; } public ZDataSource getZdataSouceByJndiname(String jndiname){ int index = 99; boolean flag = true; for(int i=0;i<length && flag;i++){ if( jndiname.equalsIgnoreCase(jndinames[i]) ){ index = i; flag = false; } } if(index == 99){ return null; } return zDataSources[index]; } public static void main(String[] args) { ZDSFactory zdsFactory = null; try { zdsFactory = new ZDSFactory(); } catch (Exception e) { e.printStackTrace(); } for(int i=1;i<4;i++){ ZDataSource zds = zdsFactory.getZdataSouceByJndiname("DataSource-Mysql1"); Connection connection = null; try { connection = zds.getConnection(); System.err.println(connection); } catch (SQLException e) { e.printStackTrace(); }finally{ try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }