반응형
No thread-bound request found 오류
RequestContextHolder
에서 request를 가져오려는데 다음과 같은 오류가 발생했다.
HttpServletRequest httpServletRequest = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
java.lang.IllegalStateException: No thread-bound request found:
Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread?
If you are actually operating within a web request and still receive this message,
your code is probably running outside of DispatcherServlet/DispatcherPortlet:
In this case, use RequestContextListener or RequestContextFilter to expose the current request.
원인
검색해보니 쓰레드세이프하지 않은 메서드에서 사용한다거나, 스케줄러 등 실질적인 request가 없는 곳에서 사용했을 때, static 메서드에서 사용했을 경우 등에서 발생하는 것 같다.
내 경우에는 다음과 같이 파라미터로 넘겨받도록 수정해서 해결했다.
해결
public LoginResponse login() {
HttpServletRequest httpServletRequest = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
something(httpServletRequest); // ....
}
protected something(HttpServletRequest httpServletRequest) {
//HttpServletRequest httpServletRequest = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); // 여기 서 지우고
}
반응형
'프로그래밍 > Java' 카테고리의 다른 글
logback 필터 - 쓰레드명 혹은 특정 내용만 필터링하기 (로그백 커스텀 필터 구현) (0) | 2023.11.17 |
---|---|
Spring 로그백 RollingFileAppender와 AsyncAppender 차이, logback-spring.xml 설정 예시 (0) | 2023.03.28 |
ajax 에러 json 메세지 받기 (Spring Security, axios) (0) | 2020.12.01 |
Oracle/JDBC 해당 위치에 지원되지 않는 SQL92 토큰: 43 (0) | 2020.07.22 |
JSTL: 서버단 코딩 없이 네이버 블로그 RSS로 포스트 목록 가져오기 (1) | 2020.07.17 |