你有很多选择。以下只有两个。
如果你有权访问 server.xml (假设这是Tomcat)文件,您可以指定自己的实现 BasicDataSourceFactory - 所以这将是初始化数据源的工厂。在自定义实现中,您可以利用解密代码服务来处理加密密码。
server.xml
BasicDataSourceFactory
如果您无权访问 server.xml 一种方法是代理目标JNDI数据源 UserCredentialsDataSourceAdapter 。
UserCredentialsDataSourceAdapter
应用指定用户的目标JDBC DataSource的适配器 默认情况下,每个标准getConnection()调用的凭据 在目标上调用getConnection(用户名,密码)。所有其他 方法只是委托给目标的相应方法 数据源。
所以基本上这可能是你的流程:
1)加载JNDI数据源
2)将JNDI数据源转换为Tomcat 数据源 能够打电话 getUsername() 和 getPassword()
getUsername()
getPassword()
3)在 UserCredentialsDataSourceAdapter ,在调用之前解密密码 getConnection(username, password) - 所有其他数据源调用将被委托给原始数据源,只有 getConnection(username, password) 将被代理。
getConnection(username, password)