We inject jms template into quite a few objects and we don't have any issues. One thing you probably need to do is wire it up with the singleconnectionfactory and make sure that it is set to reconnect on exception, e.g.:
Code:
<bean id="queueConnectionFactoryBean" class="org.springframework.jms.connection.SingleConnectionFactory" destroy-method="destroy">
<constructor-arg>
<bean class="com.atomikos.jms.QueueConnectionFactoryBean" init-method="init">
<property name="xaQueueConnectionFactory" ref="queueConnectionFactoryXa"/>
</bean>
</constructor-arg>
<property name="reconnectOnException" value="true"></property>
</bean>
<bean id="jmsTemplateXa" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory"><ref local="queueConnectionFactoryBean" /></property>
<property name="destinationResolver"><ref local="tibcoDestinationResolver" /></property>
<property name="receiveTimeout" value="-1"/>
<!-- Atomikos needs this to be set to work correctly -->
<property name="sessionTransacted" value="true"/>
</bean>