Use of a Spring SingleConnectionFactory
without enabling the reconnectOnException
setting will prevent automatic
connection recovery when the connection goes bad.
That’s because the reconnectOnException
property defaults to false
. As a result, even if the code that uses this
connection factory (Spring’s DefaultMessageListenerContainer
or your own code) has reconnect logic, that code won’t work because the
SingleConnectionFactory
will act like a single-connection pool by preventing connection close
calls from actually closing
anything. As a result, subsequent factory create
operations will just hand back the original broken Connection
.
<bean id="singleCF" class="org.springframework.jms.connection.SingleConnectionFactory"> <!-- Noncompliant --> <constructor-arg ref="dummyConnectionFactory" /> </bean>
<bean id="singleCF" class="org.springframework.jms.connection.SingleConnectionFactory" p:reconnectOnException="true"> <constructor-arg ref="dummyConnectionFactory" /> </bean>
or
<bean id="singleCF" class="org.springframework.jms.connection.SingleConnectionFactory"> <constructor-arg ref="dummyConnectionFactory" /> <property name="reconnectOnException"><value>true</value></property> </bean>