我目前正在研究一個運行Java 6應用程序的問題,當第一次啓動時,會創建一個BasicDataSource
,它在第一次創建時會存儲創建到數據庫的連接所需的所有必要信息,如下所示:當數據庫密碼更改時,Java BasicDataSource如何創建與數據庫的新連接?
DS.setUserName(username);
DS.setPassword(password);
DS.setUrl(url);
DS.setMinIdle(minIdle);
.
.
.
然後使用set屬性創建一個到數據庫的連接池。該BasicDataSource
然後存儲在Map
,然後每次需要像這樣的時間返回給調用的方法:
if (dataSources.contains(databaseDS)) {
return dataSources.get(databaseDS.getConnection());
}
我的理解是,BasicDataSource
的連接池具有對數據庫不要活連接「 t要求使用密碼登錄到數據庫,而是該連接已經建立了與數據庫建立的會話。這些連接將返回到調用方法,不需要使用數據庫重新進行身份驗證。
但是,當數據庫密碼更新並且需要/產生新連接時,BasicDataSource
如何創建該連接?它是否嘗試使用存儲在BasicDataSource
中的密碼進行數據庫驗證以獲得新連接?
謝謝
您已將數據庫憑據存儲在某處並將它們傳遞給BasicDataSource。如果數據庫服務器端的憑證已更改,則需要更改客戶端應用程序中的憑證。至少你必須用新的證書重新啓動你的應用程序。 –
@RobertMoskal感謝您的快速回復。這是否意味着BasicDataSource在嘗試產生新的數據庫連接時會嘗試發送舊密碼並導致運行時異常,因爲數據庫將返回登錄失敗? – Mark
我編輯了我原來的帖子並添加了一些更多的細節。我之前忘記提到密碼存儲在'BasicDataSource'對象本身 – Mark