/**
* Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
* EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* http://www.ewcms.com
*/
package com.ewcms.plugin.externalds.generate.factory.dbcp;
import org.apache.commons.pool.ObjectPoolFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ewcms.plugin.BaseRuntimeExceptionWrapper;
import com.ewcms.plugin.externalds.generate.service.dbcp.DbcpDataSource;
import com.ewcms.plugin.externalds.generate.service.dbcp.DbcpDataSourceable;
/**
*
* @author 吴智俊
*/
@Service
public class DbcpDataSourceFactory implements DbcpDataSourceFactoryable {
private static final Logger logger = LoggerFactory.getLogger(DbcpDataSourceFactory.class);
@Autowired
private ObjectPoolFactory objectPoolFactory;
public void setObjectPoolFactory(ObjectPoolFactory genericObjectPoolFactory) {
this.objectPoolFactory = genericObjectPoolFactory;
}
public ObjectPoolFactory getObjectPoolFactory() {
return objectPoolFactory;
}
@Override
public DbcpDataSourceable createPooledDataSource(String driverClass, String url, String username, String password) {
registerDriver(driverClass);
return new DbcpDataSource(objectPoolFactory, url, username, password);
}
/**
* 注册数据源驱动
* @param driverClass
*/
protected void registerDriver(String driverClass) {
try {
Class.forName(driverClass, true, Thread.currentThread().getContextClassLoader());
} catch (ClassNotFoundException e) {
logger.error("ClassNotFoundException", e);
throw new BaseRuntimeExceptionWrapper(e);
}
}
}