반응형

java.lang.IllegalStateException: No thread-bound request found

 

Spring Framwork 환경인 xml 파일을 Spring Boot인 java 파일로 변경하는 과정에서 java.lang.IllegalStateException: No thread-bound request found 라는 에러가 발생하였다. 

 

에러 발생

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: 
In this case, use RequestContextListener or RequestContextFilter to expose 
the current request.	
at org.springframework.web.context.request.RequestContextHolder.currentRequestAttributes(RequestContextHolder.java:131)	
at template.login.CustomAuthenticationProvider.authenticate(CustomAuthenticationProvider.java:47)	
at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:175)	
at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:200)

 

 

원인

@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
...	    
ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
...

디버그를 통해 확인해보니 해당 부분이 문제였다. 

 

equestContextHolder를 생성하지 못하는 문제였기때문에 RequestContextListener가 필요하다.

 

해결 

// WebConfig
@Bean 
public RequestContextListener requestContextListener(){    
	return new RequestContextListener();
}

나의 경우에는 WebConfig.java 파일에 해당 내용을 추가하여 문제를 해결하였다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기