1.數據庫鏈接的接口類:DatabaseConnection
package net.pingsoft.kelefa.pool;2. 數據庫鏈接工廠類ConnectionFactory
import java.sql.*;import javax.sql.*;import com.wish.JDBC.WConnection;import org.apache.commons.pool.*;import org.apache.commons.pool.impl.*;/** * 數據庫鏈接的接口類.直接調用靜態方法getDBConnection()取得Connection對象. * 相關的參數由PoolConfigServlet類根據web.xml設置,所以web.xml需要注冊PoolConfigServlet * * Copyright: Copyright (c) 2004 * @author kelefa yang * @version 1.0 * @see PoolConfigServlet */public class DatabaseConnection{ /** 數據庫的用戶名 */ public static String USER = "sa"; /** 數據庫的用密碼 */ public static String PASS = "yf1"; /** 數據庫的啟動程序類名 */ public static String DBDRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; /** 數據庫的鏈接地址 */ public static String DBURL = "jdbc:microsoft:sqlserver://192.9.200.23:1433;DatabaseName=FC"; /** 是否使用jndi */ public static boolean useJNDI = false; /** jndi的名字,useJNDI==false時無效 */ public static String JNDI = "wishJndi"; /** * 是否對數據庫鏈接進行編碼轉換 * @dePRecated 沒有進行測試,應該直接設置數據庫或在鏈接url加上編碼參數 */ public static boolean convertConnetion = false; /** 是否緩沖鏈接 */ public static boolean POOL_CONNECTION = false; /** * 沒有必要生成實例 */
private DatabaseConnection() {}
/** * 根據相應參數取回實際的數據庫鏈接. * 假如useJNDI為真,根據JNDI名字從數據源取鏈接;否則直接從jdbc取鏈接. * 假如convertConnetion為真,對鏈接再封裝,實現編碼的轉換. * @throws Exception 當useJNDI==false,并且USER,PASS,DBDRIVER,DBURL其中一個為空時 * 拋出"DatabaseConnection didn't init!!"異常 * @return Connection 數據庫鏈接,取不到時返回null */ static Connection getConnection() throws Exception { Connection conn = null; if( !useJNDI ) { if( ( USER == null ) ( PASS == null ) ( DBDRIVER == null ) ( DBURL == null ) ) throw new Exception( "DatabaseConnection didn't init!!" ); Class.forName( DBDRIVER ); conn = DriverManager.getConnection( DBURL, USER, PASS ); } else { DataSource ds = ServiceLocator.getInstance().getDataSource( JNDI ); conn = ds.getConnection(); } if( convertConnetion && conn != null ) return new WConnection( conn ); else return conn; }
/** 鏈接池工廠 */ private static GenericObjectPoolFactory poolFactory = new GenericObjectPoolFactory( new ConnectionFactory() ); /** 數據庫鏈接池 */ private static ObjectPool pool = poolFactory.createPool();
/** * if POOL_CONNECTION is true, return the pooled connetion. * POOL_CONNECTION will be set in Class PoolConfigServlet when webapp start, * you can change the value in web.xml. ** <init-param> * <param-name>poolConnection</param-name> * <param-value>true</param-value> * </init-param> ** @throws Exception * @return Connection */ public static Connection getDBConnection() throws Exception { if( POOL_CONNECTION ) { Object obj = pool.borrowObject(); if( null == obj ) return null; PoolableConnection conn = ( PoolableConnection )obj; conn.setPool( pool ); return conn; } else return getConnection(); }}
package net.pingsoft.kelefa.pool;
新聞熱點
疑難解答