Je travaille actuellement sur un problème où j'ai une application Java 6 qui, au premier démarrage, crée un BasicDataSource
qui, lors de sa création, stocke toutes les informations nécessaires pour créer des connexions à la base de données:Comment Java BasicDataSource crée-t-il de nouvelles connexions à une base de données lorsque le mot de passe de la base de données est modifié?
DS.setUserName(username);
DS.setPassword(password);
DS.setUrl(url);
DS.setMinIdle(minIdle);
.
.
.
Il crée ensuite un pool de connexions à la base de données à l'aide des propriétés de l'ensemble. Le BasicDataSource
est ensuite stocké dans un Map
qui est ensuite retourné à la méthode d'appel à chaque fois qu'il est nécessaire comme ceci:
if (dataSources.contains(databaseDS)) {
return dataSources.get(databaseDS.getConnection());
}
Je crois comprendre que la BasicDataSource
« pool de connexion s a des connexions en direct à la base de données qui n » t nécessitent l'utilisation du mot de passe pour se connecter à la base de données mais cette connexion a déjà une session établie avec la base de données. Ces connexions seront renvoyées à la méthode appelante qui n'a pas besoin de s'authentifier de nouveau avec la base de données.
Toutefois, lorsque le mot de passe de la base de données est mis à jour et qu'une nouvelle connexion est nécessaire/générée, comment le BasicDataSource
crée-t-il cette connexion? Est-ce qu'il essaie d'authentifier avec la base de données avec le mot de passe qui est stocké dans le BasicDataSource
pour obtenir une nouvelle connexion?
Merci
Vous avez stocké les informations d'identification de votre base de données quelque part et les avez transmises à BasicDataSource. Si les informations d'identification ont changé du côté du serveur de base de données, vous devez les modifier dans votre application cliente. Au minimum, vous devrez redémarrer votre application avec les nouvelles informations d'identification. –
@RobertMoskal merci pour la réponse rapide. Cela signifie-t-il que BasicDataSource, lorsqu'il tente de générer une nouvelle connexion à la base de données, essaie d'envoyer l'ancien mot de passe et provoque une exception d'exécution, car la base de données renvoie un échec de connexion? – Mark
J'ai modifié mon message original et ajouté quelques détails supplémentaires. J'ai oublié de mentionner précédemment que le mot de passe est stocké dans l'objet 'BasicDataSource' lui-même – Mark