2013-09-27 3 views
0

대기열이있는 네트워크에서 독립 실행 형 MQ 공급자가 있습니다. 또한 대기열의 메시지를 사용하는 MDB가있는 여러 Java EE 서버가 있습니다. 그래서 XATransaction으로 연결 팩토리를 만들어야합니다.JMS 독립 실행 형 MQ 공급자 및 분산 트랜잭션

그래서, 내 질문은 : MDB의에서

, 내가 CMT (JTA)이이 분산 트랜잭션의 모든 복잡성을 숨 깁니다으로 사용할 수 있습니까?

사용자 트랜잭션을 명시 적으로 생성하는 오래된 MDB가 있는데, 명시 적으로 선언 된 트랜잭션을 jms 확장 트랜잭션과 결합하도록하려면 어떻게해야합니까?

답변

0

원격 대기열에 액세스했기 때문에 XA 트랜잭션을 사용하지 않아도됩니다.

당신은 당신의 MDB가 여러 트랜잭션 자원에 다른 작업을 수행하는 경우, XA 트랜잭션을 사용해야하고, 직장이나 아무것도의 모든 단위 (이것은 로컬 및 원격 리소스에 모두 적용) 커밋에 당신이 원하는. 당신의 첫 번째 질문에 대해서는


: 글로벌 트랜잭션이 BMT를 사용하여 EJB로 전파되지 않습니다 : 쉽게, 그리고 BMT는 항상 트랜잭션 장벽 역할 때문에, CMT를 사용해야합니다.

두 번째 질문 : 나는 이것을 수행 할 수있는 옵션을 모르고 있습니다. CMT MDB로 변환하는 것이 좋습니다.

관련 : Why do EJB beans with bean-managed transactions act as a “transacation barrier”

+0

MDB는 실제로 일부 DB 수정을 수행합니다. 그래서 XA 트랜잭션을 사용해야합니다. 어쨌든, 나는 XA 트랜잭션에 참여하는 다른 방법이 없다고 생각하기 때문에 CMT를 사용하도록 코드를 수정하기로 결정했습니다. 나는 당신의 대답이 최선의 대답이라고 생각할 것입니다. –

관련 문제