우리는 거의 24x7 온라인 온라인 웹 응용 프로그램을 가지고 있습니다. 이 응용 프로그램은 JMS를 사용하여 다른 시스템과 메시지를주고받습니다. 대부분의 경우 모든 것이 예상대로 작동합니다. 그러나 때로는 네트워크에 장애가 발생하거나 백엔드 JMS 공급자 (JBOSS 5.1.0.GA)가 중지되어 다시 시작해야하는 문제가 있습니다. 그래서 다양한 이유로 웹 애플리케이션이 JMS 공급자와의 연결을 잃어 버린다. 우리가 연결을 다시 설정할 수 있었던 유일한 방법은 서블릿 컨테이너 (tomcat)를 다시 시작하는 것입니다.런타임시 Spring에서 빈을 다시 초기화 할 수 있습니까?
런타임에 ConnectionFactory 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>
빈을 다시 init를 방법이 있나요 있도록 빈 다시 설정 공급자에 대한 연결을? 응용 프로그램이 실행되는 동안이 작업을 수행하고 응용 프로그램이나 서블릿을 다시 시작하지 않아야합니다.
봄에도 가능합니까?
미리 감사드립니다.
제안 해 주셔서 감사합니다. 아쉽게도 ConnectionFactory는 이미 Spring의 CachingConnectionFactory를 감싸고 있습니다. 그러나 오류로 인해 연결이 복구되지 않습니다. 우리는 보내거나받는 모든 메시지가있는 연결을 만들고 찢어 버리는 것을 피하기 위해 그렇게했습니다. 할 수있는 다른 것이 있습니까? – groovenarula