이 Spring blog entry은 컨테이너 외부에서 JTA를 구성하는 방법을 설명합니다. JOTM은 설명 된 옵션 중 하나입니다.
당신의 경우에는 ChainedTransactionManager를 사용하여 JTA를 시뮬레이션하는 것이 더 간단 할 것입니다. 최소한의 Spring 설정으로 거의 동일한 효과를 얻습니다. 아래와 같이 구성한 다음 청취자에 @Transactional(value="chainedTransactionManager")
을 지정하십시오.
@Bean
JmsTransactionManager jmsTransactionManager(ConnectionFactory connectionFactory) {
JmsTransactionManager manager = new JmsTransactionManager();
manager.setConnectionFactory(connectionFactory);
return manager;
}
@Bean
JpaTransactionManager jpaTransactionManager() {
JpaTransactionManager manager = new JpaTransactionManager();
return manager;
}
//Encapsulating TM used to commit/rollback JMS and JPA together, without overhead of JTA. Note that JMS should be listed first, as transactions commit in reverse order and JMS less likely to fail.
@Bean
ChainedTransactionManager chainedTransactionManager(JmsTransactionManager jmsTransactionManager, JpaTransactionManager jpaTransactionManager){
ChainedTransactionManager manager = new ChainedTransactionManager(jmsTransactionManager, jpaTransactionManager);
return manager;
}
저는 14 년 이상 * core * Java로 서버를 작성해 왔으며 일반 Java로는 약간의 코딩으로이 작업을 수행 할 수 있습니다. –
감사합니다. 당신이 저에게 동일한 견본을 제공해 줄 수 있다면 정말 도움이 될 것입니다. – Partha
이 작업을 수행하는 코드를 작성하는 경향이 있지만 약 5 년 동안은 그렇지 않습니다. 그러나 JMS는 트랜잭션이되도록 설정할 수 있으며 메시지를 커밋()할지 여부를 결정합니다. –