⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datasourcemanager.java

📁 简易java框架开源论坛系统,简 易java框架开源论坛系统
💻 JAVA
字号:
package com.easyjf.dbo;

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

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

import org.apache.commons.dbcp.BasicDataSource;//apache的连接沲
import org.apache.log4j.Logger;

import com.easyjf.dbo.config.DBOConfig;
/**
 * 数据源管理类,主要用户测试,实际应用中一般直接通过JNDI访问服务器的数据源
 * @author 蔡世友
 *
 */
public class DataSourceManager {
private final static Logger logger = Logger.getLogger(DataSourceManager.class);
private static final Map container=new HashMap();
private static DataSource dataSource=null;
private String jndi;
private String jndiFactory;
private String poolFactory;
private String driver;
private String url;
private String userName;
private String password;
public DataSourceManager()
{
	
}
public DataSourceManager(DataSource source)
{
	DataSourceManager.dataSource=source;
//	container.put("default",source);
}
//通过jndi取得数据源
public DataSourceManager(String jndiFactory,String url,String jndi)
{
	this.url=url;
	this.jndiFactory=jndiFactory;
	this.jndi=jndi;
	
}
/**
 * 
 * @param driver 驱动名称
 * @param url 驱动URL
 * @param userName 数据库用户名
 * @param password 数据库帐号
 */
public DataSourceManager(String driver,String url,String userName,String password,String poolFactory)
{
	this.driver=driver;
	this.url=url;
	this.userName=userName;
	this.password=password;
	this.poolFactory=poolFactory;
}
/**
 * 创建JNDI数据源
 * @return 数据源可用则返该数据源,不可用则返回空
 */
public DataSource createJNDISource()
{
	DataSource source=null;
	  try{
		   Hashtable env = new Hashtable();		
		   if(jndiFactory!=null && (!jndiFactory.equals("")))
			env.put(Context.INITIAL_CONTEXT_FACTORY,jndiFactory);
		    if(url!=null && (!url.equals("")))
		    env.put(Context.PROVIDER_URL,url);
			InitialContext ctx=new InitialContext(env);
			if(jndi!=null && (!jndi.equals("")))				
			source=(DataSource)ctx.lookup(jndi);
			else
			logger.error("无法查找JNDI数据源,请确认配置文件是否正确!");
		     }
		     catch(Exception e)
		     {
		    	logger.error("JNDI数据源创建错误!");
		     }
	if(!testConnection(source))source=null;
	return source;	
}
/**
 * 创建驱动数据源
 * @return 如果数据源可用,则返回该数据源,不可用则返回空
 */
public DataSource createDriverSource()
{
	 BasicDataSource bdds = new BasicDataSource();
     bdds.setDriverClassName(driver);     
     bdds.setUrl(url);
     bdds.setUsername(userName);
     bdds.setPassword(password);
     if(!testConnection(bdds))bdds=null;//如果数据源不可用,则返回空
     return bdds;     
}
/**
 * 测试数据源连接是否可用
 * @param source
 * @return
 */
public boolean testConnection(DataSource source)
{
	boolean ret=false;
	if(source==null)return false;
	Connection con=null;
	 try{
	     con=source.getConnection();
	     if(con!=null)
	     {
	    	ret=true; 
	     }
	     }
	     catch(Exception e)
	     {
	     logger.error("无法从数据源创建数据连接,请确认是否配置正确!"+e);	 
	     }
	     finally{
	    	 try{
	    		if(con!=null)con.close();
	    	 }
	    	 catch(Exception e)
	    	 {
	    		 logger.error("无法从数据源创建数据连接,请确认是否配置正确!"+e);
	    	 }
	     }
	     
return ret;
}
public void setDataSource(DataSource source)
{
	DataSourceManager.dataSource=source;
}
public static void addDataSource(String name,DataSource dataSource)
{
	container.put(name,dataSource);	
}
public static Map getDataSources() throws EasyDBOException
{
	if(container.isEmpty())	DBOConfig.getInstance().init();		
	return container;
}
public static DataSource getDataSource()throws EasyDBOException
{
	if(dataSource==null)
	{
		//try{
		dataSource=DBOConfig.getInstance().getDataSource();
		//}
		//catch(EasyDBOException e)
		//{
		//	logger.error(e);
		//}
	}
	return dataSource;
}
public static DataSource getDataSource(String name)throws EasyDBOException
{
	if(container.isEmpty())
	{
		DBOConfig.getInstance().init();
	}
	Object data=container.get(name);
	if(data==null ||(!(data instanceof DataSource)))
	{
	throw new EasyDBOException("找不到ID为"+name+"的数据库源,请确认配置文件是否正确!");	
	}
	return dataSource;
}

/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -