/**
* http://auzll.iteye.com/
*/
package com.gengweibo.dao.mysql;
import java.beans.PropertyVetoException;
import javax.sql.DataSource;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.name.Named;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
*
* @author auzll@msn.com
*/
public class C3P0Provider implements Provider<DataSource>{
@Inject @Named("db.driverClass") private String driverClass;
@Inject @Named("db.jdbcUrl") private String jdbcUrl;
@Inject @Named("db.user") private String user;
@Inject @Named("db.password") private String password;
@Inject @Named("db.autoCommitOnClose") private boolean autoCommitOnClose;
@Inject @Named("db.initialPoolSize") private int initialPoolSize;
@Inject @Named("db.minPoolSize") private int minPoolSize;
@Inject @Named("db.maxPoolSize") private int maxPoolSize;
@Inject @Named("db.maxIdleTime") private int maxIdleTime;
@Inject @Named("db.acquireIncrement") private int acquireIncrement;
@Inject @Named("db.checkoutTimeout") private int checkoutTimeout;
@Inject @Named("db.maxIdleTimeExcessConnections") private int maxIdleTimeExcessConnections;
public DataSource get() {
try {
ComboPooledDataSource source = new ComboPooledDataSource();
source.setDriverClass(driverClass);
source.setJdbcUrl(jdbcUrl);
source.setUser(user);
source.setPassword(password);
source.setAutoCommitOnClose(autoCommitOnClose);
source.setInitialPoolSize(initialPoolSize);
source.setMinPoolSize(minPoolSize);
source.setMaxPoolSize(maxPoolSize);
source.setMaxIdleTime(maxIdleTime);
source.setAcquireIncrement(acquireIncrement);
source.setCheckoutTimeout(checkoutTimeout);
source.setMaxIdleTimeExcessConnections(maxIdleTimeExcessConnections);
return source;
} catch (PropertyVetoException e) {
throw new ExceptionInInitializerError(e);
}
}
}