2016-06-12 4 views
0

У меня есть приложение для весеннего ботинка с пружинным JMS, использующим контейнер DefaultMessageListener. Я использую Atomikos для управления транзакциями. Исключение: откат очереди сообщений работает нормально, а сообщения переходят в очередь, но обновления базы данных не откат. Я установил autoconfigured JtaTransactionManager в DefaultMessageContainerBean. Существуют ли какие-либо другие конфигурации, необходимые здесь, чтобы получить истинное глобальное управление транзакциями. Я использую My Batis для базы данных.Atomicos Управление транзакциями весенний ботинок/пружинные заторы

public class CusListener implements MessageListener{ 
public void onMessage(Message message) { 

    //Database call 

    catch (Exception ex) { 

       throw (new RuntimeException()); 
       } 

} 
} 



@Configuration 
public class ListenerContainer{ 

    @Bean 
    public DefaultMessageListenerContainer defaultMessageListenerContainer(ConnectionFactory queueConnectionFactory,MQQueue queue, MessageListener listener, 
      JtaTransactionManager jtaTransactionManager) { 


     DefaultMessageListenerContainer defaultMessageListenerContainer = 
       new DefaultMessageListenerContainer(); 
     defaultMessageListenerContainer.setConnectionFactory(queueConnectionFactory);    
     defaultMessageListenerContainer.setDestination(queue); 
     defaultMessageListenerContainer.setMessageListener(listerner); 
     defaultMessageListenerContainer.setTransactionManager(jtaTransactionManager); 
     defaultMessageListenerContainer.setSessionTransacted(true); 
     defaultMessageListenerContainer.setConcurrency("3-10"); 


     return defaultMessageListenerContainer; 
} 

    //other beans declaration passed in the method above 
} 



@Configuration 
public class PlanListenerSqlSessFac { 


    @Bean(name="sqlSessionFactory") 
    public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") NMCryptoDataSourceWrapper dataSource) throws Exception { 

    } 



    @Bean(name="driverManagerDataSource") 
    public DriverManagerDataSource driverManagerDataSource() { 
     DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource(); 

     return driverManagerDataSource; 
     } 

}

+1

Трудно сказать, что происходит, не глядя на код. –

+0

Для стандартного кода JMS anb DB требуется довольно много стандартных компонентов: - – Atul

+0

Добавлен код с вопросом. – Atul

ответ

Смежные вопросы