태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

'Transaction'에 해당되는 글 2건

  1. 2008/07/04 [Spring] Transaction Manager를 여러개 둘때,,,
frameworks/spring2008/07/04 14:56
Transaction 과 나는 무슨 관계인가 -_-
휴~ 이것때문에 몇일을 잡고 있는지 모르겠다.

일단, Spring 에서 Transaction 을 annotation 으로 처리하기 위해서는
다음과 같은 세트?를 설정해주고,
Interface를 통해 개발을 하게되면, 된다.

    <context:annotation-config />

    <tx:annotation-driven transaction-manager="tobitTransactionManager"/>

    <bean id="tobitDataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource"
        p:driverClassName="${tobit.jdbc.driverClassName}"
        p:url="${tobit.jdbc.url}"
        p:username="${tobit.jdbc.username}"
        p:password="${tobit.jdbc.password}"
        />

    <bean id="tobitTransactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
        p:dataSource-ref="tobitDataSource"
        />

근데 문제는 2개이상의 DataSource가 있을때였다. ㅜ_ㅜ

저 세트만 추가해주면 당연히 될꺼라고 생각했다.(사실 살짝 의심이 가긴 했다. annotation-driven에 TransactionManager를 명시적으로 적어주었지만, 과연 자동을 매핑이 될까? 하는,,,)

결과는 나의 생각과는 다르게 안되었다.

이때부터 나의 삽질은 시작된다.

처음엔 내가 트렌젝션 처리하는것에 대한 개념을 잘못 잡고 있는거라고 생각하고, 처음부터 다시 훑어 보았다.

근데, 트렌젝션 메니져를 1개만 놓고 사용하면 정상적으로 잘 되는것이 아닌가,,, ㅠ_ㅠ

구글링도 해보고, 책도 찾아보고,,, 하지만 내가 원하는 답은 없었다.

전에 Spring 교육때 수업 해주신 박재성 강사님께도 메신져로 물어보니

annotation-driven을 사용할때는 제대로 작동하지 않을것 같다는 이야기를 듣고,

수동으로 셋팅해주기로 했다.

결과는 성공,,, 음

    <bean id="itsmDataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource"
        p:driverClassName="${itsm.jdbc.driverClassName}"
        p:url="${itsm.jdbc.url}"
        p:username="${itsm.jdbc.username}"
        p:password="${itsm.jdbc.password}"
        />

    <bean id="aTransactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
        p:dataSource-ref="aDataSource"
        />
   
    <aop:config>
        <aop:pointcut id="boardServiceOperation"
            expression="execution(* a.board.BoardService.*(..))" />
        <aop:advisor advice-ref="txAdvice"
            pointcut-ref="boardServiceOperation" />
    </aop:config>
   
    <tx:advice id="txAdvice" transaction-manager="aTransactionManager">
        <tx:attributes>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>


경험이 돈,, ㅠ_ㅠ
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by THLIFE.net

TRACKBACK http://thlife.net/trackback/703 관련글 쓰기

댓글을 달아 주세요