안녕하세요 얼마전 다중 db접속 관련해서 질문했던 네비텍에 김기태라고 합니다.

답변을 받아 작업을 하고 있는데 해결되지 않은 부분이 있어 재질문 드립니다.

아래의 페이지를 참고해
http://wiki.dev.daewoobrenic.co.kr/mediawiki/index.php/%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98

다중 데이터 소스를 사용하는 경우 트랜잭션 처리하기  위해 아래와 같은 방법을 이용하라고 되어있습니다.

"하나의 DB에 대해서 권한별로 데이터 소스를 다르게 사용하거나, 아예 다수의 DB로부터 다양한 데이터 소스를 가져와 사용해야 하는 경우에도 스프링을 통해서 트랜잭션을 일관성 있게 관리할 수 있습니다. 이 경우 JTA를 사용하게 됩니다.
JTA를 사용하면 다수의 DB 커넥션에서 수행된 DML문들을 하나의 트랜잭션으로 묶어서 일괄적으로 커밋 혹은 롤백(2-phase-commit) 할 수 있습니다. 이를 위해서는 데이터 소스가 JTA를 지원해야 하는데, 별도의 솔루션을 사용하지 않는 경우 일반적으로 웹로직, 웹스피어, JBOSS 등 JTA를 지원하는 WAS의 데이터소스를 사용해야 합니다. 스프링에서는 이러한 데이터 소스를 <jee:lookup/>을 통해서 가져오고, 트랜잭션 매니저를 JTA 트랜잭션 매니저로 변경함으로써 쉽게 2-phase-commit을 활용할 수 있습니다.
	<jee:jndi-lookup id="dataSource" jndi-name="jdbc/sampleJtaDS"/>
 
	<bean id="txManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>
<jee:jndi/>는 이전과 달라질 것이 없습니다. 다만, jndi-name 속성에 지정된 데이터소스명에 해당하는 WAS의 데이터 소스가 JTA 데이터 소스이면 됩니다. 다음으로 트랜잭션 매니저를 선언하는 부분에서 트랜잭션 매니저 클래스 부분이 달라집니다. id가 txManager인 <bean/> 정의를 보면, 스프링에서 제공하는 JtaTransactionManager를 사용하는 것을 볼 수 있으며, 별도로 데이터 소스를 지정하지 않는 것을 확인할 수 있습니다. 이렇게 되면, txManager가 적용되는 대상들(예, 서비스 클래스의 메소드. 이부분은 <aop:config/>에서 지정됨)에서 사용되는 커넥션들이 모두 트랜잭션 관리 대상이 됩니다. "

현재 WAS는 톰캣을 이용하고 있는데 위의 내용에서는  JTA를 지원하는 경우 별도의 솔루션을 사용하지 않는경우 웹로직 , 웹스피어 , JBOSS 등 JTA를 지원하는 WAS 데이터 소스를 사용해야 합니다 라고 써잇네요.

톰캣은 JTA를 지원하는걸로 알고 있는데 톰캣에서 JTA 지원하려면 어떤식으로 구현해야 하는지 알고싶습니다.

위와 같은 방법으로 비슷하게 시도하였지만 계속 Exception이 발생해 was가 작동하지 않네요

되도록이면 멀티 유저와 다중 트랜젝션의 사용된 있는 예제가 있으면 좋을것 같습니다.

개발환경은 db는 오라클을 쓰고
was는 톰캣 을 쓰고 있습니다.

바쁘신데 귀찮게 해드려 죄송합니다 ^^;;

답변 기다리겠습니다.

이 게시물을..