我们有一个几乎 24x7 在线的 Spring Web 应用程序。此应用程序使用 JMS 发送和接收来自其他系统的消息。在大多数情况下,一切都按预期工作。但是,有时我们会遇到网络故障或后端 JMS 提供程序 (JBOSS 5.1.0.GA) 挂起且必须重新启动的问题。因此,由于各种原因,Web 应用程序失去了与 JMS 提供者的连接。我们能够重新建立连接的唯一方法是重新启动 servlet 容器 (tomcat)。
有没有办法在运行时重新初始化 ConnectionFactory bean?我们在 applicationContext.xml 中定义了以下 bean:
<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="lookupOnStartup" value="false" />
<property name="cache" value="false" />
<property name="proxyInterface" value="javax.jms.ConnectionFactory" />
<property name="jndiTemplate">
<ref bean="jndiTemplate" />
</property>
<property name="jndiName">
<value>ConnectionFactory</value>
</property>
</bean>
有没有办法重新初始化 bean,以便 bean 重新建立与提供者的连接?我们希望在应用程序运行时执行此操作,并避免重新启动应用程序或 servlet。
这在春天甚至可能吗?
提前致谢。