1

ほぼ 24 時間 365 日オンラインの Spring Web アプリケーションがあります。このアプリケーションは、JMS を使用して、他のシステムとの間でメッセージを送受信します。ほとんどの場合、すべてが期待どおりに機能します。ただし、ネットワークに障害が発生したり、バックエンド JMS プロバイダー (JBOSS 5.1.0.GA) がハングして再起動しなければならないという問題が発生することがあります。したがって、さまざまな理由により、Web アプリケーションは JMS プロバイダーへの接続を失います。接続を再確立できた唯一の方法は、サーブレット コンテナー (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 を再初期化する方法はありますか? アプリケーションが稼働している間にこれを行い、アプリまたはサーブレットの再起動を回避したいと考えています。

これは春でも可能ですか?

前もって感謝します。

4

1 に答える 1

0

この connectionFactory を、Spring が提供する ConnectionFactory -接続の自動回復をサポートするCachingConnectionFactoryにラップできる場合があります。

<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
    <property name="targetConnectionFactory" ref="jmsConnectionFactory"/>
    <property name="sessionCacheSize" value="5"/>
</bean>
于 2012-08-07T23:13:25.387 に答える