/* ================================================================== * Created [2009-4-27 下午11:32:55] by Jon.King * ================================================================== * TSS * ================================================================== * mailTo:jinpujun@hotmail.com * Copyright (c) Jon.King, 2009-2012 * ================================================================== */ package com.jinhe.tss.core.cachepool.extend.connection.datasource; import java.sql.Connection; import java.util.Properties; import javax.sql.DataSource; import org.apache.log4j.Logger; import org.hibernate.cfg.Environment; import org.hibernate.util.NamingHelper; import com.jinhe.tss.core.exception.BusinessException; /** * <p> * DatasourceConnectionProvider.java * </p> * * ## JNDI Datasource #hibernate.connection.datasource jdbc/tss #hibernate.connection.username db2 #hibernate.connection.password db2 * * @author Jon.King 2007-5-9 */ class DatasourceConnectionProvider implements IConnectionProvider{ private static final Logger log = Logger.getLogger(DatasourceConnectionProvider.class); public Connection getConnection(Properties p){ try { String jndiName = p.getProperty(Environment.DATASOURCE); DataSource ds = (DataSource) NamingHelper.getInitialContext(p).lookup(jndiName); if (ds == null) { throw new BusinessException("Could not find datasource: " + jndiName); } String user = p.getProperty(Environment.USER); String pass = p.getProperty(Environment.PASS); return user != null || pass != null ? ds.getConnection(user, pass) : ds.getConnection(); } catch (Exception e) { log.fatal("从数据源获取连接时出错", e); throw new BusinessException("从数据源获取连接时出错", e); } } }