强制Spring创建一个新的singleton bean来替换损坏的bean



我的应用程序有一个偶尔会损坏的bean,由于它是一个单例,我必须重新启动整个应用程序才能刷新它。是否可以让Spring销毁并重新创建一个单例bean,并替换现有bean中的所有引用?

如果重要的话,这就是给我带来麻烦的豆子。它是连接到我们的Active Directory的LdapContextSource。偶尔绑定会停止工作("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关闭了,似乎如果其中一台服务器碰巧试图绑定,出现了"打嗝",那么bean就无法恢复。这就是我的问题,有没有办法迫使Spring用新的Singleton bean替换现有的Singletonbean。

我建议将LDAP上下文源池化。如果绑定失败,请关闭连接并从池中检查另一个:

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

最新更新