2012-03-06 3 views
0

В моем приложении есть компонент, который иногда повреждается, и поскольку это одноэлемент, я должен перезапустить все приложение, чтобы оно обновилось. Возможно ли, чтобы Spring уничтожил и воссоздал одноэлементный компонент и заменил все ссылки на существующие бобы?Force 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 новым.

ответ

0

Я бы рекомендовал объединить источник контекста LDAP. Если привязка не удается, закрыть соединение и проверить еще один из бассейна:

http://static.springsource.org/spring-ldap/docs/1.1/reference/

+0

Как именно вы «закрыть соединение и проверить еще один из пула» с помощью ldapTemplate? –

+0

Вы посмотрели раздел 5.1.3 Объединение в ссылку, которую я вам отправил? – duffymo