package com.noteshare.common.datasource.provider;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;


public class ConnectionProvider extends AbstractConnectionProvider {
    
    /**
     * 数据源集合
     */
    private  Map<String, DataSource> dataSources = new HashMap<String, DataSource>();
    
    
    /**
     * 获取数据源
     * @param dataSourceName 数据源名称
     * @return
     * @throws NamingException
     */
    private DataSource getDataSource(String dataSourceName) throws NamingException {
        if (null != dataSources.get(dataSourceName)) {
            return dataSources.get(dataSourceName);
        }
        try {
            //初始化上下文
            Context cxt=new InitialContext();
            //获取与逻辑名相关联的数据源对象
            DataSource ds=(DataSource)cxt.lookup("java:comp/env/" + dataSourceName);
            dataSources.put(dataSourceName, ds);
            return ds;
        } catch (NamingException e) {
            throw e;
        }
    }
    

    @Override
    public Connection getConnection(String dataSourceName) {
        try {
            DataSource ds = this.getDataSource(dataSourceName);
            return ds.getConnection();
        } catch (NamingException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

}

浏览 409 评论 0 赞 0 砸 0 标签: Java基础知识
评论
还可以再输入500个字

请您注意

·自觉遵守:爱国、守法、自律、真实、文明的原则
·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规
·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·您在NoteShare上发表的作品,NoteShare有权在网站内保留、转载、引用或者删除
·参与本评论即表明您已经阅读并接受上述条款