java Servlet使用c3p0創建多個Mysql數據庫連接池,Sevlet使用c3p0創建oracle數據庫連接池

由於之前的servlet操作數據庫的時候造成了數據庫連接的等待問題,所以考慮使用使用數據庫連接池的使用,因爲項目中涉及mysql和oracle的數據同步問題,所以也將oracle的連接次配置給出:

1、數據庫連接配置:

public static final String DBDRIVER               = "com.mysql.jdbc.Driver";

public static final String DBURL_A                = "jdbc:mysql://Mysql地址一:3306/數據庫";  
public static final String DBUSER_A               = "用戶名";  
public static final String DBPASSWORLD_A          = "密碼";  
  
public static final String DBURL_B                = "jdbc:mysql://Mysql地址二:3306/數據庫";  
public static final String DBUSER_B               = "用戶名";  
public static final String DBPASSWORLD_B          = "密碼";  

public static final String ODBDRIVER              = "oracle.jdbc.driver.OracleDriver";

public static final String DBURL_C                = "jdbc:oracle:thin:@Oracle地址:3306:數據庫";  
public static final String DBUSER_C               = "用戶名";  
public static final String DBPASSWORLD_C          = "密碼"; 

2、多個Mysql數據庫連接池:

package mysql;

import java.sql.Connection;
import java.sql.SQLException;


import com.mchange.v2.c3p0.ComboPooledDataSource;

//引入站點的配置信息
import config.Config;

/**
 * 數據庫連接生成類,返回一個數據庫連接對象
 * 構造函數完成c3p0的配置,根據不一樣的構造生成不一樣的連接池對象
 * 
 * @author yuyu
 *
 */

public class DbConnect {
	
private static ComboPooledDataSource dataSourceJLP=null;
private static ComboPooledDataSource dataSourceMDB=null;

private String db;


	/**
	 * 構造函數完成數據庫的連接和連接對象的生成
	 */
	public DbConnect() {
		try{
			if(dataSourceJLP==null){
								
				dataSourceJLP=new ComboPooledDataSource();
				
		        //設置連接參數
				dataSourceJLP.setJdbcUrl(Config.DBURL_A);
				dataSourceJLP.setDriverClass(Config.DBDRIVER);
				dataSourceJLP.setUser(Config.DBUSER_A);
				dataSourceJLP.setPassword(Config.DBPASSWORLD_A);

				dataSourceJLP.setInitialPoolSize(3);
				dataSourceJLP.setMaxPoolSize(10);

			}
			this.db="jlp";
	
		}catch(Exception e){
			
			e.printStackTrace();
			
		}
		
	}
	public DbConnect(String mdb) {
		try{
						
			if(dataSourceMDB==null){
				
				dataSourceMDB=new ComboPooledDataSource();
				
		        //設置連接參數
				dataSourceMDB.setJdbcUrl(Config.DBURL_B);
				dataSourceMDB.setDriverClass(Config.DBDRIVER);
				dataSourceMDB.setUser(Config.DBUSER_B);
				dataSourceMDB.setPassword(Config.DBPASSWORLD_B);

				dataSourceMDB.setInitialPoolSize(3);
				dataSourceMDB.setMaxPoolSize(10);

			}
	
			this.db="mdb";
			
		}catch(Exception e){
			
			e.printStackTrace();
			
		}
		
	}
	/**
	 * 取得已經構造生成的數據庫連接
	 * @return 返回數據庫連接對象
	 */
	public Connection getConnect(){
		
		try {
			if(db.equals("mdb")){
				
				return dataSourceMDB.getConnection();
				
			}else if(db.equals("jlp")){
				
				return dataSourceJLP.getConnection();
				
			}

		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
		
	}
}
3、oracle數據庫連接池:

package oracle;

import java.sql.Connection;
import java.sql.SQLException;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import config.Config;

/**
 * Oracle鏈接數據庫對象
 * @author Administrator
 *
 */
public class OracleConnect {
	private static ComboPooledDataSource dataSourceTest=null;
	
	/**
	 * 構造函數完成數據庫的連接和連接對象的生成
	 */
	public OracleConnect() {
		try{
			
			if(dataSourceTest==null){
				
				dataSourceTest=new ComboPooledDataSource();
				
		        //設置連接參數
				dataSourceTest.setJdbcUrl(Config.DBURL_C);
				dataSourceTest.setDriverClass(Config.ODBDRIVER);
				dataSourceTest.setUser(Config.DBUSER_C);
				dataSourceTest.setPassword(Config.DBPASSWORLD_C);

				dataSourceTest.setInitialPoolSize(3);
				dataSourceTest.setMaxPoolSize(10);

			}
	
		}catch(Exception e){
			
			e.printStackTrace();
			
		}
		
	}
	/**
	 * 取得已經構造生成的數據庫連接
	 * @return 返回數據庫連接對象
	 */
	public Connection getConnect(){
		try {
				
			return dataSourceTest.getConnection();

		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
}

4、對應的調用:

Connection conA=new DbConnect().getConnect();//獲取Mysql A數據庫連接對象
Connection conB=new DbConnect("mdb").getConnect();//獲取Mysql B數據庫連接對象
Connection conC=new OracleConnect().getConnect();//獲取Oracle C數據庫連接對象



發佈了35 篇原創文章 · 獲贊 44 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章