Controller에 트랜잭션 걸기..
- 작성자 :
- 구*웅
- 작성일 :
- 2010-02-11 14:11:06
- 조회수 :
- 3,826
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
제가 구현한 패키지 명은 egovframework.com.hanoi..입니다.
하나의 프로세스를 진행하다보면 Controller에서 Exception이 발생하는데
그전까지 진행되었던 트랜잭션이 롤백되지 않아 프로세스가 꼬이는 경우가있어
Controller에서 Exception 발생시 롤백시키기 위해 트랜잭션을 걸고싶어
context-transaction.xml 파일에 다음과 같이 설정했습니다.
<aop:config>
<aop:pointcut id="requiredTx"
expression="
execution(* egovframework.com..web.*Controller.*(..)) or
execution(* egovframework.com..impl.*Impl.*(..)) or
execution(* egovframework.rte.sample..impl.*Impl.*(..))"/>
<aop:advisor advice-ref="txAdvice"
pointcut-ref="requiredTx" />
</aop:config>
위와같이 설정하니
egovframework.com.hanoi.service.impl.*Impl.class에는 트랜잭션이 걸리고
egovframework.com.hanoi.web.*Controller.class에는 트랜잭션이 걸리지 않습니다.
제가 잘못 설정하거나 Controller에 트랜잭션은 원래 걸수없는건가요
답변 부탁드립니다.
하나의 프로세스를 진행하다보면 Controller에서 Exception이 발생하는데
그전까지 진행되었던 트랜잭션이 롤백되지 않아 프로세스가 꼬이는 경우가있어
Controller에서 Exception 발생시 롤백시키기 위해 트랜잭션을 걸고싶어
context-transaction.xml 파일에 다음과 같이 설정했습니다.
<aop:config>
<aop:pointcut id="requiredTx"
expression="
execution(* egovframework.com..web.*Controller.*(..)) or
execution(* egovframework.com..impl.*Impl.*(..)) or
execution(* egovframework.rte.sample..impl.*Impl.*(..))"/>
<aop:advisor advice-ref="txAdvice"
pointcut-ref="requiredTx" />
</aop:config>
위와같이 설정하니
egovframework.com.hanoi.service.impl.*Impl.class에는 트랜잭션이 걸리고
egovframework.com.hanoi.web.*Controller.class에는 트랜잭션이 걸리지 않습니다.
제가 잘못 설정하거나 Controller에 트랜잭션은 원래 걸수없는건가요
답변 부탁드립니다.
A
안녕하세요.. 구본웅님..
올려주신 정보상으로 2가지 가능성이 있을 것 같습니다.
첫번쨰는 expression 부분에 지정된 web.*Controller 정의에 의하면..
web 패키지 밑에 Controller가 있어야 하는데.. 그렇지 못한 경우이고..
두번째는 올려 주시진 않았지만..
txAdvice에서 정의된 method와 대상 Controller의 메소드 매칭이 되지 않은 경우입니다..
첫번재는 패키지를 맞추어 주시면 되고, 두번째는 txAdvice에 method를 추가로 지정하시면 될 것 같습니다..
그럼.. 즐거운 하루되십시오.
감사합니다.
올려주신 정보상으로 2가지 가능성이 있을 것 같습니다.
첫번쨰는 expression 부분에 지정된 web.*Controller 정의에 의하면..
web 패키지 밑에 Controller가 있어야 하는데.. 그렇지 못한 경우이고..
두번째는 올려 주시진 않았지만..
txAdvice에서 정의된 method와 대상 Controller의 메소드 매칭이 되지 않은 경우입니다..
첫번재는 패키지를 맞추어 주시면 되고, 두번째는 txAdvice에 method를 추가로 지정하시면 될 것 같습니다..
그럼.. 즐거운 하루되십시오.
감사합니다.