txmanager timeout 설정 다시 문의드립니다.
- 작성자 :
- 김*용
- 작성일 :
- 2014-10-22 18:04:46
- 조회수 :
- 529
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
안녕하세요. 아래질문에 대한 답변이 rollback-for를 사용하느냐고 하셨는데 rollback-for="Exception"으로 설정해서 사용중입니다.
그런데 xml을 다시한번 보다보니 제가 좀 잘못 이해하고 사용한게 아닌가 하는 생각이 좀 들더군요.
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource/>
</bean>
로 설정하고 pointcut을 *Impl class에 걸었거든요.
그리고 *Impl.class 즉 서비스 클래스에서 딜레이를 5초를 줬습니다. 서비스 클래스의 메소드 수행시간이 1초를 넘을때 Exception이 발생하는게 맞는건가요?
아무래도 서비스내에서 실행되는 쿼리별로 설정한 timeout인 1초를 보장하는게 아닌가 하는 생각이 좀 들긴하는데요. 혹시 그렇다면 서비스에 timeout을 줄 수 있는 방법이 있는지 알려주실 수 있나요?
--아래--
안녕하세요. 전자정부프레임웍 3.0을 사용중입니다.
내용만 요약해서 말씀드리자면,
<tx:method ......timeout="1"/>
로 설정을하고
txManager가 걸려있는 메소드에
Thread.sleep(5000);을 넣었습니다.
1초가 지난후에 Exception이 발생할 것으로 예상 되었으나 정상적으로 서비스가 실행이 됩니다.
설정하는 방법이 틀린건가요?
그런데 xml을 다시한번 보다보니 제가 좀 잘못 이해하고 사용한게 아닌가 하는 생각이 좀 들더군요.
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource/>
</bean>
로 설정하고 pointcut을 *Impl class에 걸었거든요.
그리고 *Impl.class 즉 서비스 클래스에서 딜레이를 5초를 줬습니다. 서비스 클래스의 메소드 수행시간이 1초를 넘을때 Exception이 발생하는게 맞는건가요?
아무래도 서비스내에서 실행되는 쿼리별로 설정한 timeout인 1초를 보장하는게 아닌가 하는 생각이 좀 들긴하는데요. 혹시 그렇다면 서비스에 timeout을 줄 수 있는 방법이 있는지 알려주실 수 있나요?
--아래--
안녕하세요. 전자정부프레임웍 3.0을 사용중입니다.
내용만 요약해서 말씀드리자면,
<tx:method ......timeout="1"/>
로 설정을하고
txManager가 걸려있는 메소드에
Thread.sleep(5000);을 넣었습니다.
1초가 지난후에 Exception이 발생할 것으로 예상 되었으나 정상적으로 서비스가 실행이 됩니다.
설정하는 방법이 틀린건가요?
A
안녕하세요. 김승용님.
해당 timeout 설정은 실제 transaction을 처리하는 부분에 대한 timeout으로 서비스 부분에 대한 전체 시간을 기준으로 처리되는 것은 아닙니다.
구체적인 timeout의 용도를 확인할 수 없지만, 개별 처리되는 statement에 대한 timeout의 경우는 아래의 링크를 참조하셔서 적용하시면 되실 것 같습니다.
http://helloworld.naver.com/helloworld/textyle/1321
혹 서비스 처리 부분에 대한 timeout이 필요하신 경우라면, 현재로서 제공되는 기능이 없기 때문에 AOP의 around 유형을 통해 자체적으로 구현하셔야 할 것 같습니다.
그럼, 즐거운 하루되십시오.
감사합니다.
해당 timeout 설정은 실제 transaction을 처리하는 부분에 대한 timeout으로 서비스 부분에 대한 전체 시간을 기준으로 처리되는 것은 아닙니다.
구체적인 timeout의 용도를 확인할 수 없지만, 개별 처리되는 statement에 대한 timeout의 경우는 아래의 링크를 참조하셔서 적용하시면 되실 것 같습니다.
http://helloworld.naver.com/helloworld/textyle/1321
혹 서비스 처리 부분에 대한 timeout이 필요하신 경우라면, 현재로서 제공되는 기능이 없기 때문에 AOP의 around 유형을 통해 자체적으로 구현하셔야 할 것 같습니다.
그럼, 즐거운 하루되십시오.
감사합니다.