我们有一个应用程序,其中数据库密码由cyber-ark system/vault.
管理
为此,我创建了一个用于获取密码的bean,并在c3p0 data-source bean.
请找到相同的代码/ bean配置。
<bean id="dsPassword" class="com.company.project.util.FetchPasswordFromCyberArk">
<property name="cyberarkAppID" value="${cyberark.APP_ID}" />
<property name="cyberarkQuery" value="${cyberark.QUERY}" />
<property name="user" value="${db.username}" />
</bean>
<!-- default maxPoolSize: 15, minPoolSize: 3 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="jdbcUrl" value="${db.url}" />
<property name="driverClass" value="com.ibm.db2.jcc.DB2Driver" />
<property name="user" value="${db.username}" />
<property name="password" value="#{dsPassword.dsPasswordFromCyberArk}" />
<property name="maxIdleTime" value="300"/>
<property name="testConnectionOnCheckin" value= "true"/>
<property name="testConnectionOnCheckout" value= "true"/>
<property name="preferredTestQuery" value="SELECT 1 FROM SYSIBM.SYSDUMMY1"/>
</bean>
现在,只要在cyber-ark
中更改密码,连接就会在池中断开连接。然后,每当在网络柜中更改密码后尝试重新连接时,池管理器都应获取新密码,而不是已缓存的密码。截至目前,池管理器正在存储旧密码并尝试使用该旧密码进行连接(结果是无法连接)。请提出是否有办法解决这种情况。
让我知道我是否错过了任何事情。