私は最初に起動したときに、最初に作成されたときに、データベースへの接続を作成するために必要なすべての情報を格納するJava 6アプリケーションを実行している問題を解決しています:データベースのパスワードが変更された場合、Java BasicDataSourceはデータベースへの新しい接続をどのように作成しますか?
DS.setUserName(username);
DS.setPassword(password);
DS.setUrl(url);
DS.setMinIdle(minIdle);
.
.
.
次に、setプロパティを使用してデータベースへの接続のプールを作成します。
if (dataSources.contains(databaseDS)) {
return dataSources.get(databaseDS.getConnection());
}
私の理解では、BasicDataSource
の接続プールは、データベースドンへのライブ接続を持っている "ということです:BasicDataSource
はその後、その後、呼び出し元のメソッドにそれはそうのように必要とされるたびに返されMap
に保存されていますパスワードを使用してデータベースにログインする必要がありますが、接続にはすでにデータベースとのセッションが確立されています。これらの接続は、データベースとの再認証を必要としない呼び出しメソッドに返されます。
ただし、データベースのパスワードが更新され、新しい接続が必要/生成されると、BasicDataSource
はどのようにその接続を作成しますか?新しい接続を取得するために、BasicDataSource
に保存されているパスワードを使用してデータベースで認証しようとしていますか?
は最後にそうあなた
データベース資格情報をどこかに保存し、BasicDataSourceに渡しました。資格情報がデータベースサーバー側で変更されている場合は、クライアントアプリケーションの資格情報を変更する必要があります。少なくとも、新しい資格情報でアプリケーションを再起動する必要があります。 –
@RobertMoskalはすばやく返信してくれてありがとう。これは、BasicDataSourceがデータベースへの新しい接続を開始しようとしているときに、古いパスワードを送信しようとし、データベースがログイン失敗を返すのでランタイム例外を引き起こすことを意味しますか? – Mark
オリジナルの投稿を編集し、さらに詳細を追加しました。以前は、パスワードが 'BasicDataSource'オブジェクト自体に格納されていることを忘れていました – Mark