У вас есть куча доступных вариантов.Ниже приведены только два.
Если у вас есть доступ к файлу server.xml
(предполагается, что это Tomcat), вы можете указать собственную реализацию BasicDataSourceFactory
- так что это будетфабрика, которая будет инициализировать источник данных.В вашей пользовательской реализации вы можете использовать службы кода дешифрования для работы с зашифрованным паролем.
Если у вас нет доступа к server.xml
, одним из способов будет проксирование целевого источника данных JNDI с помощью UserCredentialsDataSourceAdapter
.
Адаптер для целевого источника данных JDBC, применяющий указанные учетные данные пользователя к каждому стандартному вызову getConnection (), неявно вызывающий getConnection (имя пользователя, пароль) для цели.Все остальные методы просто делегируются соответствующим методам целевого источника данных.
Таким образом, в основном это может быть ваш поток:
1) Загрузить источник данных JNDI
2) Приведите JNDI-источник данных к Tomcat DataSource , чтобы иметь возможность вызывать getUsername()
и getPassword()
3) In UserCredentialsDataSourceAdapter
, расшифруйте пароль перед вызовом getConnection(username, password)
- все остальные вызовы источника данных будут делегированы исходному источнику данных, только прокси будет getConnection(username, password)
.