1
我們有一個幾乎全天候在線的Spring Web應用程序。此應用程序使用JMS發送和接收來自其他系統的消息。大部分情況下,一切都按預期工作。然而,偶爾我們會遇到問題:我們的網絡發生故障或後端JMS提供程序(JBOSS 5.1.0.GA)掛起並且必須重新啓動。因此,出於各種原因,Web應用程序失去了與JMS提供者的連接。我們能夠重新建立連接的唯一方法是重新啓動servlet容器(tomcat)。是否有可能在運行時重新初始化Spring中的bean?
是否有重新初始化在運行時的連接工廠的bean的方法嗎?我們已經定義了以下豆在我們的applicationContext.xml:
<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的方式,以使豆重新建立了與供應商的連接?我們希望在應用程序處於活動狀態時執行此操作,並避免重新啓動應用程序或servlet。
這甚至可能在春天?
在此先感謝。
感謝您的建議。不幸的是,ConnectionFactory已經包裝了Spring的CachingConnectionFactory。但連接不會因錯誤而恢復。我們這樣做是爲了避免創建和拆除每個發送/接收郵件的連接。還有什麼可以做的嗎? – groovenarula 2012-08-08 02:39:37