spring配置dbcp链接数据库

1.spring的配置文件
springmvc-servlet.xml

  
        
                classpath:jdbc.properties
        
    
        
       
            
      
        
      
	
	
	
	
	
        
        
        
        
        
        
        
        
        
        
        
        
       	
        
      
        
       
        
      
        
      
        
       
        
     
        
        
		
		
	 	 
		
		  
	
    
    
    
	
		
	
    

jdbc.properties

#db:oracle
#driverClassName:oracle.jdbc.driver.OracleDriver
#url:jdbc:oracle:thin:@10.4.39.67:11521/yqdb
#username:om
#password:Om4wd5qa


db:oracle
driverClassName:oracle.jdbc.driver.OracleDriver
url:jdbc:oracle:thin:@localhost:1521:orcl
username:lyx
password:lyx



maxActive:100
initialSize:10
maxWait:60000
minIdle:10
maxIdle:15

logAbandoned:true
removeAbandoned:true
removeAbandonedTimeout:10 
timeBetweenEvictionRunsMillis:10000
numTestsPerEvictionRun:10
minEvictableIdleTimeMillis:10000
validationQuery:SELECT 1 FROM DUAL

#\u6821\u9A8C\u94FE\u63A5
testWhileIdle:true
testOnBorrow:true

建立数据库链接:

package com.dbcp.conn;

import java.util.List;
import java.util.Map;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

public class TestDbcp implements ApplicationContextAware
{
	
	private static ApplicationContext ctx ;
	
	//获取上下文
	@Override
	public void setApplicationContext(ApplicationContext context)
			throws BeansException
	{
		// TODO Auto-generated method stub
		
		ctx = context;
		
	}
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
	
		if(ctx == null)
		{
			String path = System.getProperty("user.dir") + "\\src\\springmvc-servlet.xml";
			
			//获取上下文
			ctx = new  FileSystemXmlApplicationContext(path);
				//ClassPathXmlApplicationContext("classpath*:springmvc-servlet.xml");
		}
	
		JdbcTemplate jdbcTemplate = (JdbcTemplate) ctx.getBean("jdbcTemplate");
		
		List> resultList =  jdbcTemplate.queryForList("select t.singerid,t.singername,t.singercountry from SINGER t");
		
		List> resList =  jdbcTemplate.queryForList("select * from COMMENTARY t");
		
		
		System.out.println("歌手表 输出查询结果:-----------------------");
		for (Map map : resultList)
		{
			System.out.println(map.get("singerid")+","+map.get("singername")+","+map.get("singercountry"));
		}
		
		System.out.println("评论表 输出查询结果:-----------------------");
		System.out.println();
		for (Map map : resList)
		{
			System.out.println(map.get("commentaryId")+","+map.get("commentary_context")+","+map.get("commentary_time"));
		}
	}




}

Question

dbcp连接池数据库不能连接,当数据库恢复后,不重启应用,链接无法链接。

解决这个问题需要上数据库链接配置中的连接池配置中加上对发起链接是否有效的判断,如果无效则关闭删除,或是清空链接池中无效的连接。便于建立新的连接。


在spring的配置文件中设置:


  

或是

 

这两个属性配置其中一个都可以。



DBCP介绍:


1. DBCP连接数据库相关介绍:

http://blog.csdn.net/bonnie_ting/article/details/6822677


2. testOnBorrow和testOnReturn在生产环境一般是不开启的,主要是性能考虑。失效连接主要通过testWhileIdle保证,如果获取到了不可用的数据库连接,一般由应用处理异常。

http://www.oschina.net/question/219875_2143124

你可能感兴趣的:(JAVA,Springmvc,Spring)