스케쥴러 질문입니다.
- 작성자 :
- 이*연
- 작성일 :
- 2010-11-23 17:07:01
- 조회수 :
- 3,470
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
[[egovframework:rte:fdl:scheduling]]를 사용중입니다.
스케쥴러에서 세션 타임아웃을 가지고 처리를 하는 부분을 만들고 있는데
HttpServletRequest객체를 구해서 getMaxInactiveInterval값을 구해서
처리를 할려고 하는데 리퀘스트 객체를 가져오는 부분에서 Null참조 에러가 발생합니다.
리퀘스트 객체를 가져올때는 ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
을 사용했구요 다른 해결책이 있는지 알고 싶습니다.
아니면 스케쥴러에서 톰캣의 세션타임을 알 수 있는 다른 방법이 있는지도 알고싶습니다.
스케쥴러에서 세션 타임아웃을 가지고 처리를 하는 부분을 만들고 있는데
HttpServletRequest객체를 구해서 getMaxInactiveInterval값을 구해서
처리를 할려고 하는데 리퀘스트 객체를 가져오는 부분에서 Null참조 에러가 발생합니다.
리퀘스트 객체를 가져올때는 ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
을 사용했구요 다른 해결책이 있는지 알고 싶습니다.
아니면 스케쥴러에서 톰캣의 세션타임을 알 수 있는 다른 방법이 있는지도 알고싶습니다.
A
안녕하세요.. 이승연님..
RequestContextHolder의 경우는 request로부터 시작된 경우.. 즉, Controller를 통해 Service가 호출된 경우에 사용하실 수 있습니다.
(ThreadLocal을 통해 request 객체를 얻어 오는 방식)
scheduler의 경우는 request된 정보가 없기 때문에 사용하실 수 없습니다.
추가적으로 container의 정보를 얻을 수 있는 방법이 없을 것 같습니다.
(session timeout 정보를 얻을 수 없음)
이 경우는 timeout에 대한 정보를 property를 통해 직접 지정하는 방식으로 운영하셔야 할 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
RequestContextHolder의 경우는 request로부터 시작된 경우.. 즉, Controller를 통해 Service가 호출된 경우에 사용하실 수 있습니다.
(ThreadLocal을 통해 request 객체를 얻어 오는 방식)
scheduler의 경우는 request된 정보가 없기 때문에 사용하실 수 없습니다.
추가적으로 container의 정보를 얻을 수 있는 방법이 없을 것 같습니다.
(session timeout 정보를 얻을 수 없음)
이 경우는 timeout에 대한 정보를 property를 통해 직접 지정하는 방식으로 운영하셔야 할 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.