<?xml version="1.0" encoding="UTF-8"?> 
<beans 
    xmlns="http://www.springframework.org/schema/beans" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:jms="http://www.springframework.org/schema/jms" 
    xmlns:jee="http://www.springframework.org/schema/jee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                        http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-2.5.xsd
                        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd" 
> 
<bean id="jndiTemplate"
       class="org.springframework.jndi.JndiTemplate">
   <property name="environment">
     <props>
       <prop key="java.naming.factory.initial">com.swiftmq.jndi.InitialContextFactoryImpl</prop>
       <prop key="java.naming.provider.url">smqp://localhost:4001/timeout=10000</prop>
     </props>
   </property>
 </bean>

 <bean id="jndiConnectionFactory"
       class="org.springframework.jndi.JndiObjectFactoryBean"
       lazy-init="true">
   <property name="jndiTemplate">
     <ref bean="jndiTemplate"/>
   </property>
   <property name="jndiName">
     <value>ConnectionFactory</value>
   </property>
 </bean>

<bean id="jmsDestinationResolver" class="org.springframework.jms.support.destination.JndiDestinationResolver">
<property name="jndiTemplate">
	<ref bean="jndiTemplate"/>
</property>
</bean>

<!--
    <bean id="destinationResolver" class="org.springframework.jms.support.destination.JndiDestinationResolver"> 
      <property name="jndiEnvironment"> 
        <props> 
          <prop key="java.naming.factory.initial">com.swiftmq.jndi.InitialContextFactoryImpl</prop> 
          <prop key="java.naming.provider.url">smqp://localhost:4001/timeout=1000</prop> 
        </props> 
      </property> 
    </bean> 

    <jee:jndi-lookup id="jndiConnectionFactory" jndi-name="ConnectionFactory"> 
      <jee:environment> 
        java.naming.factory.initial=com.swiftmq.jndi.InitialContextFactoryImpl 
        java.naming.provider.url=smqp://localhost:4001/timeout=1000 
      </jee:environment> 
    </jee:jndi-lookup> 
-->
    <bean id="authConnectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter" 
          p:targetConnectionFactory-ref="jndiConnectionFactory" 
          p:username="admin" 
          p:password="secret" /> 
    
    <bean id="connectionFactory" 
          class="com.swiftmq.jms.springsupport.SingleSharedConnectionFactory"
           p:targetConnectionFactory-ref="authConnectionFactory" /> 
    
 <!--   <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory" --> 
 <!--         p:targetConnectionFactory-ref="authConnectionFactory" --> 
<!--          p:cacheProducers="false" --> 
<!--          />--> 

<!--     <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory" --> 
<!--           p:targetConnectionFactory-ref="authConnectionFactory" --> 
<!--           /> --> 

    <bean id="transactionManager" class="org.springframework.jms.connection.JmsTransactionManager" 
          p:connectionFactory-ref="connectionFactory" /> 
    
    <bean id="responder" class="bat.Responder"/> 
    

    <bean id="messageListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter" 
          p:defaultListenerMethod="process"> 
      <constructor-arg ref="responder"/> 
    </bean> 

    <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer" 
          p:transactionManager-ref="transactionManager" 
          p:connectionFactory-ref="connectionFactory" 
          p:destinationName="testqueue"
          p:destinationResolver-ref="jmsDestinationResolver" 
          p:messageListener-ref="messageListener" 
		  p:receiveTimeout="-1"
		  p:acceptMessagesWhileStopping="true"
          /> 
    
</beans> 
