1. 程式人生 > >spring配置dbcp連結資料庫

spring配置dbcp連結資料庫

1.spring的配置檔案
springmvc-servlet.xml

  <bean id="config" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location">
                <value>classpath:jdbc.properties</value>
        </property>
    </bean>
        <!-- 註解掃描包 -->
      <context:component-scan base-package="com"/> 
            
      <!--配置註解 -->
      <mvc:annotation-driven/>  
      
	<mvc:resources location="/js/" mapping="/js/**"/>
	
	
	
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${driverClassName}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
        <!--maxActive: 最大連線數量-->
        <property name="maxActive" value="${maxActive}"/>
        <!--minIdle: 最小空閒連線-->
        <property name="minIdle" value="${minIdle}"/>
        <!--maxIdle: 最大空閒連線-->
        <property name="maxIdle" value="${maxIdle}"/>
        <!--initialSize: 初始化連線-->
        <property name="initialSize" value="${initialSize}"/>
       	<!--  連線被洩露時是否列印 -->
        <property name="logAbandoned" value="${logAbandoned}"/>
      <!--   removeAbandoned: 是否自動回收超時連線 -->
        <property name="removeAbandoned" value="${removeAbandoned}"/>
       <!--  removeAbandonedTimeout: 超時時間(以秒數為單位) -->
        <property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}"/>
      <!--   maxWait: 超時等待時間以毫秒為單位 1000等於60秒 -->
        <property name="maxWait" value="${maxWait}"/>
      <!--   在空閒連接回收器執行緒執行期間休眠的時間值,以毫秒為單位. -->
        <property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}"/>
       <!--   在每次空閒連接回收器執行緒(如果有)執行時檢查的連線數量 -->
        <property name="numTestsPerEvictionRun" value="${numTestsPerEvictionRun}"/>
     <!--    1000 * 60 * 30  連線在池中保持空閒而不被空閒連接回收器執行緒 -->
        <property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}"/>
        <property name="validationQuery" value="${validationQuery}"/>
		
		<!-- 定時對執行緒池中的連結進行validateObject校驗,對無效的連結進行關閉 -->
	 	 <!--  <property name="testWhileIdle" value="${testWhileIdle}"/>   -->
		<!-- 指定在從連線池中拿連線時,要檢查連線是否有效,若無效會將連線從連線池中移除掉 -->
		 <property name="testOnBorrow" value="${testOnBorrow}"/> 
	
    </bean>
    
    <!-- 建立spring jdbcTemplate -->
	<bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
    

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<Map<String,Object>> resultList =  jdbcTemplate.queryForList("select t.singerid,t.singername,t.singercountry from SINGER t");
		
		List<Map<String,Object>> resList =  jdbcTemplate.queryForList("select * from COMMENTARY t");
		
		
		System.out.println("歌手錶 輸出查詢結果:-----------------------");
		for (Map<String, Object> map : resultList)
		{
			System.out.println(map.get("singerid")+","+map.get("singername")+","+map.get("singercountry"));
		}
		
		System.out.println("評論表 輸出查詢結果:-----------------------");
		System.out.println();
		for (Map<String, Object> map : resList)
		{
			System.out.println(map.get("commentaryId")+","+map.get("commentary_context")+","+map.get("commentary_time"));
		}
	}




}

Question

dbcp連線池資料庫不能連線,當資料庫恢復後,不重啟應用,連結無法連結。

解決這個問題需要上資料庫連結配置中的連線池配置中加上對發起連結是否有效的判斷,如果無效則關閉刪除,或是清空連結池中無效的連線。便於建立新的連線。

在spring的配置檔案中設定:

<!-- 定時對執行緒池中的連結進行validateObject校驗,對無效的連結進行關閉 -->
<property name="testWhileIdle" value="true"/>   

或是
<!-- 指定在從連線池中拿連線時,要檢查連線是否有效,若無效會將連線從連線池中移除掉 -->
<property name="testOnBorrow" value="true"/> 

這兩個屬性配置其中一個都可以。

DBCP介紹:

1. DBCP連線資料庫相關介紹:

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

2. testOnBorrow和testOnReturn在生產環境一般是不開啟的,主要是效能考慮。失效連線主要通過testWhileIdle保證,如果獲取到了不可用的資料庫連線,一般由應用處理異常。

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

相關推薦

spring配置dbcp連結資料庫

1.spring的配置檔案 springmvc-servlet.xml <bean id="config" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"

spring配置DBCP數據連接

url地址 def 源配置 factor attribute 單位 jdbc 緩沖 ima DBCP連接池介紹 ----------------------------- 目前 DBCP 有兩個版本分別是 1.3 和 1.4。 DBCP 1.3 版本需要運行於 JDK 1.

Spring 註解方式 連結資料庫

下面是 spring的配置檔案 applicationContext-db.xml的內容: <?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.o

spring配置檔案抽取資料庫配置資訊

spring的配置檔案裡面連線資料庫的資訊如下:  <!-- 配置資料來源 -->    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"   destroy-m

spring配置dbcp連線池

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  <property name="username" value="${connection.username}"></property&

Spring Boot連結資料庫操作及配置

本文將對在spring Boot構建的應用中,基於MySQL資料庫的JPA連線的配置。 屬性配置檔案(application.properties) spring.jpa.sh

spring整合Mybatis oracle資料庫連線配置dbcp

Spring + struts + MyBatis 結合編碼demo 一.首先匯入相應的 Spring + struts + MyBatis jar包  1.Spring + MyBatis :如下操作順序 1.1:首先建立資料庫連線:(oracle) <bean

使用spring jdbcTemplate和dbcp操作資料庫及事務配置

程式碼結構及jar包 ServiceClass.java package com.orange.test; import java.sql.Types; import java.util.List; import javax.annotation.PostConst

spring mvc配置 + dbcp數據源+jdbcTemplate

roo cte con 官網 tor spirng nta 錯誤頁 工作 摘要: 把spring的jar包放到lib目錄,jar可以根據你要用的功能來選擇,如果懶或者不想以後用到功能再找就一起都放進去,註意不用放文檔jar和源碼jar 突然想起spring對環境的一些要求,

Spring配置檔案中如何使用外部配置檔案配置資料庫連線

版權宣告:本文為博主原創文章,歡迎指正或者轉載。 https://blog.csdn.net/qq_38663729/article/details/78821258 直接在spring的配置檔案中applicationContext.xml檔案中配置資料庫連線也可以,但是有個問題,需要在url

Spring配置檔案中配置資料庫連線(mysql,sqlserver,oracle)

xml配置檔案中配置如下: <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"

Spring配置資料庫連線池Druid

連線池原理 連線池基本的思想是在系統初始化的時候,將資料庫連線作為物件儲存在記憶體中,當用戶需要訪問資料庫時,並非建立一個新的連線,而是從連線池中取出一個已建立的空閒連線物件。使用完畢後,使用者也並非將連線關閉,而是將連線放回連線池中,以供下一個請求訪問使用。而連線的建立、斷開都由連線池自身來管理。同時,還

Spring Boot配置檔案properties資料庫密碼加密

Spring Boot配置檔案資料庫密碼加密 pom新增依賴 <!-- 資料庫加密 --> <dependency> &l

Spring學習總結(21)——Spring整合阿里巴巴資料庫連線池DruidDataSource配置及其常見問題彙總

一、參考配置如下    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-          

Spring Cloud Config(分散式配置中心)使用git作為遠端配置中心連線資料庫配置

為什麼要用SpringCloud分散式配置中心? 在分散式系統中,由於服務數量巨多,為了方便服務配置檔案統一管理,實時更新,所以需要分散式配置中心元件。 在SpringCloud中,有分

Spring配置資料來源的三種方式 (dbcp c3p0 jndi)

  [html]  view plain copy   1,使用org.springframework.jdbc.datasource.DriverManage

Spring配置資料庫連線池錯誤(特別注意)

之前使用資料連線池配置C3p0出現了 Unknown database 'localhost:3306/chat',仔細發現原來是配置檔案的問題, jdbc.url=jdbc:mysql:///lo

spring配置mysql資料庫大小寫問題

1、小結 最近在自己的小專案中使用駝峰法對資料庫進行命名:WeGame,一直沒遇到問題,今天spring突然報錯資料庫wegame不存在。網上的方法說可以通過配置mysql來控制大小寫,我覺得還是乖乖地使用小寫字母命名吧,就像不要用首字母大寫來命名java的資料夾一樣,入鄉

spring配置datasource三種方式 資料庫連線池

1、使用org.springframework.jdbc.datasource.DriverManagerDataSource  說明:DriverManagerDataSource建立連線是隻要有連線就新建一個connection,根本沒有連線池的作用。  <bean id="dataSource"

spring配置資料庫的連線和配置

    <mybatis:scan base-package="dao" />   //掃描mapper檔案     <context:component-scan base-package="controll