欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決Druid動(dòng)態(tài)數(shù)據(jù)源配置重復(fù)刷錯(cuò)誤日志的問題

 更新時(shí)間:2021年05月12日 14:31:53   作者:小妖云汐  
使用druid數(shù)據(jù)庫連接池實(shí)現(xiàn)動(dòng)態(tài)的配置數(shù)據(jù)源功能,在配置過程中出現(xiàn)一個(gè)問題既然是用戶自己配置的數(shù)據(jù)源,就無法避免輸入錯(cuò)誤,連接失敗等情況,關(guān)于這個(gè)問題怎么處理呢,今天小編通過本文給大家詳細(xì)說明下,感興趣的朋友一起看看吧

Druid動(dòng)態(tài)數(shù)據(jù)源配置 主要是繼承AbstractRoutingDataSource再通過AOP來實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換.

下面給大家介紹Druid動(dòng)態(tài)配置數(shù)據(jù)源重復(fù)刷錯(cuò)誤日志問題,具體內(nèi)容如下所示:

問題描述

功能需求
使用druid數(shù)據(jù)庫連接池實(shí)現(xiàn) 動(dòng)態(tài)的配置數(shù)據(jù)源功能:IP、端口、用戶名、密碼都是用戶頁面手動(dòng)輸入,可以測(cè)試連接,保存數(shù)據(jù)源。

問題說明:
既然是用戶自己配置的數(shù)據(jù)源,就無法避免輸入錯(cuò)誤,連接失敗等情況。

預(yù)期情況:用戶輸入的配置錯(cuò)誤,測(cè)試連接時(shí),會(huì)返回連接失敗的信息。

實(shí)際情況:數(shù)據(jù)源測(cè)試連接,連接失敗后:

后臺(tái)一直打印錯(cuò)誤信息,一直自動(dòng)重連

方法被阻塞無返回信息,導(dǎo)致前端頁面一直處于等待狀態(tài)

錯(cuò)誤信息】:

com.alibaba.druid.pool.DruidDataSource-create connection SQLException, url:xxx, errorCode 0, state 08S01
The last packet sent successfully to the server was 0 milliseconds ago.
The driver has not received any packets from the server.

原始代碼】:

public static void getDataSource(DataConfig dataConfig) throws Exception{
	try {
		Properties properties = new Properties();
		properties.setProperty("driverClassName",dataConfig.getDriverClassName());
		properties.setProperty("url",dataConfig.getUrl());
		properties.setProperty("username",dataConfig.getUserName());
		properties.setProperty("password",dataConfig.getPassWord());
		DataSource ds = DruidDataSourceFactory.createDataSource(properties);
	} catch (Exception e) {
		e.printStackTrace();
	}
}

解決辦法

參數(shù)說明】

參數(shù) 解釋
connectionErrorRetryAttempts 連接出錯(cuò)后再嘗試連接次數(shù)
breakAfterAcquireFailure 數(shù)據(jù)庫服務(wù)宕機(jī)自動(dòng)重連機(jī)制
maxWait 超時(shí)等待時(shí)間
修改后的代碼】

public static void getDataSource(DataConfig dataConfig) throws Exception{
	try {
		Properties properties = new Properties();
		properties.setProperty("driverClassName",dataConfig.getDriverClassName());
		properties.setProperty("url",dataConfig.getUrl());
		properties.setProperty("username",dataConfig.getUserName());
		properties.setProperty("password",dataConfig.getPassWord());
		properties.setProperty("maxWait","500");//如果失敗,當(dāng)前的請(qǐng)求可以返回
		DruidDataSource druidDataSource = (DruidDataSource)DruidDataSourceFactory.createDataSource(properties);
		druidDataSource.setConnectionErrorRetryAttempts(0);// 失敗后重連的次數(shù)
		druidDataSource.setBreakAfterAcquireFailure(true);//請(qǐng)求失敗之后中斷
		DataSource ds = druidDataSource;//如果有需要使用javax.sql.DataSource的話
	} catch (Exception e) {
		e.printStackTrace();
	}
}

踩坑總結(jié)

不要在properties中配置connectionErrorRetryAttempts和breakAfterAcquireFailure,沒有效果

1111111

連接失敗的具體錯(cuò)誤信息,catch不到,源碼中已經(jīng)catch了異常信息,做了相關(guān)處理

2222222

到此這篇關(guān)于解決Druid動(dòng)態(tài)數(shù)據(jù)源配置重復(fù)刷錯(cuò)誤日志的問題的文章就介紹到這了,更多相關(guān)Druid動(dòng)態(tài)數(shù)據(jù)源配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Hadoop使用hdfs指令查看hdfs目錄的根目錄顯示被拒的原因及解決方案

    Hadoop使用hdfs指令查看hdfs目錄的根目錄顯示被拒的原因及解決方案

    這篇文章主要介紹了Hadoop使用hdfs指令查看hdfs目錄的根目錄顯示被拒的原因及解決方案,分布式部署hadoop,服務(wù)機(jī)只有namenode節(jié)點(diǎn),主機(jī)包含其他所有節(jié)點(diǎn),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • MybatisPlus,無XML分分鐘實(shí)現(xiàn)CRUD操作

    MybatisPlus,無XML分分鐘實(shí)現(xiàn)CRUD操作

    這篇文章主要介紹了MybatisPlus,無XML分分鐘實(shí)現(xiàn)CRUD操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java實(shí)現(xiàn)馬踏棋盤算法

    Java實(shí)現(xiàn)馬踏棋盤算法

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)馬踏棋盤算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java那些鮮為人知的關(guān)鍵字volatile詳析

    Java那些鮮為人知的關(guān)鍵字volatile詳析

    這篇文章主要給大家介紹了關(guān)于Java那些鮮為人知的關(guān)鍵字volatile的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • IDEA教程之Activiti插件圖文詳解

    IDEA教程之Activiti插件圖文詳解

    這篇文章主要介紹了IDEA教程之Activiti插件圖文詳解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 如何通過RabbitMq實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)詳解

    如何通過RabbitMq實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)詳解

    工作中經(jīng)常會(huì)有定時(shí)任務(wù)的需求,常見的做法可以使用Timer、Quartz、Hangfire等組件,這次想嘗試下新的思路,使用RabbitMQ死信隊(duì)列的機(jī)制來實(shí)現(xiàn)定時(shí)任務(wù),下面這篇文章主要給大家介紹了關(guān)于如何通過RabbitMq實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Java中的線程池如何實(shí)現(xiàn)線程復(fù)用

    Java中的線程池如何實(shí)現(xiàn)線程復(fù)用

    這篇文章主要介紹了Java中的線程池如何實(shí)現(xiàn)線程復(fù)用問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 在Java的JDBC使用中設(shè)置事務(wù)回滾的保存點(diǎn)的方法

    在Java的JDBC使用中設(shè)置事務(wù)回滾的保存點(diǎn)的方法

    這篇文章主要介紹了在Java的JDBC使用中設(shè)置事務(wù)回滾的保存點(diǎn)的方法,JDBC是Java用于連接各種數(shù)據(jù)庫的API,需要的朋友可以參考下
    2015-12-12
  • Java如何基于command調(diào)用openssl生成私鑰證書

    Java如何基于command調(diào)用openssl生成私鑰證書

    這篇文章主要介紹了Java如何基于command調(diào)用openssl生成私鑰證書,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java實(shí)現(xiàn)順序表的操作

    Java實(shí)現(xiàn)順序表的操作

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)順序表的基本操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評(píng)論