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>