2011-04-01 2 views
0

누군가 큰 문제를 해결하는 데 도움이 될지 궁금해서 JmsTransactionManagers를 Spring 2.5.6과 함께 구현하려고했지만 작동하지 않습니다.more connectionsFactories가있는 JmsTransactionManager

5 개의 다른 환경에서 읽고 쓰고 있기 때문에 5 개의 연결 요소가 있습니다. 그것들은 모두 내 queue xml bean에 있습니다. 그러나 하나의 queue에서 메시지를 읽고 옵션과 맞지 않기 때문에 트랜잭션 관리자로 롤백을하기 때문에.

내 질문은 어떻게 더 많은 JmsTransactionManagers를 구성 할 수 있는가입니다.

+0

설명이 아닌 구성을 표시합니다.) – Bozho

답변

-1

당신은 당신이 하나 개 이상의 JMS 세션에 트랜잭션 액세스해야하는 경우 JTA를 사용해야합니다 트랜잭션 관리

<bean class="org.springframework.jms.connection.JmsTransactionManager"> 
    <property name="connectionFactory" ref="connectionFactory1"></property> 
</bean> 

<bean class="org.springframework.jms.connection.JmsTransactionManager"> 
    <property name="connectionFactory" ref="connectionFactory2"></property> 
</bean> 
+0

트랜잭션이 작동하려면 Spring one PlatformTransactionManager를 제공해야합니다. 여기서 수행중인 작업은 유효한 구문이지만 두 번째 JmsTransactionManager는 사용할 수 없습니다. –

1

에 ConnectionFactory에의 참조를 추가 할 수 있습니다. 이 경우에는 JmsTransactionManager를 전혀 사용하지 않을 것이고, JtaTransactionManager를 사용하고 모든 연결을 분산 트랜잭션에 참여시킬 수 있습니다. 이것은 모든 JMS 연결이 XA와 호환된다고 가정합니다 (종종 연결 팩토리가 다른 시간 (예 : ActiveMQXAConnectionFactory 대 ActiveMQConnectionFactory).

응용 프로그램 서버 (glassfish, weblogic, jboss AS 등)를 사용하지 않는 경우 독립 실행 형 JTA 구현 (atomikos 또는 jboss TS)을 배포 할 수 있습니다. 각각의 구성은 상당히 다르지만 Spring은 대부분을 지원합니다.

관련 문제