В моем приложении есть компонент, который иногда может быть поврежден, и, поскольку он является единичным, мне нужно перезапустить все приложение, чтобы обновить его. Можно ли заставить Spring уничтожить и воссоздать одноэлементный компонент и заменить все ссылки в существующих компонентах?
Если это имеет значение, это боб, который доставляет мне неприятности. Это LdapContextSource, подключающийся к нашей Active Directory. Иногда привязка перестает работать («org.springframework.ldap.CommunicationException: простое связывание не удалось»), и тогда это все, что она написала, пока я не смогу вернуть приложение.
<bean id="adContextSourceTarget"
class="org.springframework.ldap.core.support.LdapContextSource">
<property name="url" ref="adUrl" />
<property name="base" ref="adBase" />
<property name="userDn" ref="adUsername" />
<property name="password" ref="adPassword" />
</bean>
Это приложение работает на двух серверах, и оба они не будут недоступны одновременно, так что AD не работает, похоже, что если один из серверов пытается связываться, и возникает «сбой» боб не может восстановиться. И в этом заключается мой вопрос: существует ли способ заставить Spring заменить существующий компонент Singleton новым.