连接池和log4j

连接池和log4j

    • 连接池:
      • 三种获取conn的方法
    • log4j
      • 配置文件:

连接池:

三种获取conn的方法

1、普通获取
2、利用Threadlocal控制获取同一个conn
3、利用连接池获取多个conn

//连接池:创建单个conn 创建多个conn 利用Threadlocal(map放线程和conn)绑定同一个conn
//加入两个jar包mchange和c3p0
//用了这个ComboPooledDataSource(“mysql”),里面全部的包改为sql,其他类中也一样的,导包用sql!!!!!!!*
//关闭conn:conn.close(); 自带方法
//Threadlocal保证获取统一对象

package com.ljx.db;
import java.sql.Connection;
import java.sql.SQLException;

import org.junit.Test;

import com.mchange.v2.c3p0.ComboPooledDataSource;
//连接池:创建单个conn  创建多个conn 利用Threadlocal(map放线程和conn)绑定同一个conn   
//加入两个jar包mchange和c3p0
//用了这个ComboPooledDataSource("mysql"),里面全部的包改为sql!!!!!!!!!!!!!!!!!!!!!!!!
//关闭conn:conn.close(); 自带方法
//Threadlocal保证获取统一对象
//-----------------------------------

public class ConnectionPool {
	//保证获取的是同一个connection
	static ThreadLocal threadLocal=new ThreadLocal();
	//在c3p0-config中我的配置是:  
	static ComboPooledDataSource cd = new ComboPooledDataSource("mysql");
		
	//连接池获取获取conn
	@Test
	public static Connection getConn(){
		Connection conn =null;
		try {
			conn= cd.getConnection();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
		
	}
	
	//利用ThreadLocal连接池获取conn
	public static  Connection getOneConn() {
		Connection conn=threadLocal.get();
		if(conn==null){
			try {
				conn=cd.getConnection();
				threadLocal.set(conn);	
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}				
		}	
		return conn;
	}
	
	
	//获取多个conn
	@Test
	public void getMoreConn() throws SQLException{
		long begin=System.currentTimeMillis();
		ComboPooledDataSource cd = new ComboPooledDataSource("mysql");
		for(int i=0;i<10000;i++){
			Connection conn = (Connection) cd.getConnection();
			if(conn!=null){
				System.out.println("获取来接"+i);
				conn.close();
			}
		}
		long end=System.currentTimeMillis();
		System.out.println((end-begin)/1000);
		
		
	}
	//关闭的方法:
	public static  void close(T ...ats){
		for (T t : ats) {
			if(t!=null){
				try {
					t.close();
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

}

这是c3p0-config.xml的配置:



   
      
        10  
        30  
        100  
        10  
        200  
      
​
   

       
        com.mysql.jdbc.Driver    
        jdbc:mysql://localhost:3306/etc?characterEncoding=utf-8    
        root    
        111111
    
 
    


log4j

测试代码
注意导包别导错了

package com.ljx.Te;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.chainsaw.Main;


//包不要弄错了import org.apache.log4j.Logger;
public class Tlog {
	public static void main(String[] args) {
		// 加载配置文件
		PropertyConfigurator.configure("src/log4j.properties");

		// 得到一个日志输出对象,并执行相关类
		Logger log = Logger.getLogger(Tlog.class);
		
		// 日志级别的设置   如果设置 info 级别 比info高的才会答应  比info 低的 不会答应 
		//日志输出 
		    log.trace("trace级别的日志输出");  
		    log.debug("debug级别的日志输出");  
	        log.info("info级别的日志输出");  
	        log.warn("warn级别的日志输出");  
	        log.error("error级别的日志输出");  
	        log.fatal("fatal级别的日志输出");  
	        try  
	        {  
	            System.out.println(9 / 0);  
	        }  
	        catch (RuntimeException e)  
	        {  
	            log.error(e.getMessage());  
	        } 
	}
	
}

配置文件:

生成log文档在项目的logs/springmvc-demo.log中


### set log levels ###
log4j.rootLogger = INFO , console , debug , error
 
### console ###
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n
 
### log file ###
log4j.appender.debug = org.apache.log4j.DailyRollingFileAppender
### 相对路径###
log4j.appender.debug.File =logs/springmvc-demo.log
log4j.appender.debug.Append = true
log4j.appender.debug.Threshold = INFO
log4j.appender.debug.layout = org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n
 
### exception ###
log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.File = ../logs/springmvc-demo_error.log
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n


你可能感兴趣的:(javaee)