У нас есть приложение, в котором паролем базы данных управляет cyber-ark system/vault.
. Для этого я создал компонент для получения пароля и введите пароль в c3p0 data-source 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
, соединения в пуле разрываются.Затем всякий раз, когда он пытается восстановить соединение после изменения пароля в кибер-ковчеге, диспетчер пула должен получить новый пароль, а не тот, который кэшируется.На данный момент менеджер пула хранит старый пароль и пытается соединиться с ним (в результате не удается соединиться).пожалуйста, предложите, если есть какой-либо способ справиться с этой ситуацией.
Дайте мне знать, если я что-то пропустил.