動態修改資料來源配置

2021-06-15 01:47:08 字數 700 閱讀 4366

因專案需要能動態修改資料來源的配置,及修改後不用重啟整個應用。使用的資料來源是apache的basicdatasource,網上千篇一律的是如下實現:

basicdatasource bds=getdatasource();

trycatch(exception e)

bds.setusername("sa");

bds.setpassword("admin");

還說要先關閉,再修改配置才能生效。

這樣的**根本就實現不了所說的功能,直接執行出錯。連線池關閉後,就無法使用了。本身也沒有open,reopen之類的方法。

也有說c3p0支援熱修改,但本身好像有bug,容易出錯死鎖錯誤。也就沒有去研究到底支援不。

basicdatasource 的close方法其實只設定了乙個標識變數:closed,標記為關閉就取不到連線,要是能修改該標識為非關閉,就可以繼續使用了。

所以實現的思路是:先關閉,再修改配置,再開啟標識。問題是basicdatasource並沒有這樣的介面提供出來,幸運的是,basicdatasource中的

closed屬性是protected,也就是我們可以在子類中訪問到這個屬性,也就可以進行修改了。

所以只要自定義乙個類繼承於basicdatasource,提供如下方法即可:

public void open()

當然配置檔案中使用的資料來源的類名就需要改為這個自定義類了。

docker ubuntu修改資料來源

啟動ubuntu容器,容器名為compassionate euler docker start compassionate euler 進入容器終端 docker attach compassionate euler 使用找不到基本命令,只好apt get update,但網路不好,只好更改資料來源...

動態修改JDBC資料來源配置

因專案需要能動態修改資料來源的配置,及修改後不用重啟整個應用。使用的資料來源是apache的basicdatasource,網上千篇一律的是如下實現 basicdatasource bds getdatasource trycatch exception e bds.setusername sa b...

動態資料來源配置

引入component utl 2.2.5 配置 com.cimen.ways groupid component util artifactid 2.2.5 version dependency 配置資料庫連線資訊,配置方式如下 configuration public class newmyba...