티스토리 뷰
728x90
Debug
RestTemplate 503 오류
이슈내용
기존 RestTemplate를 사용하던 부분에 503에러가 발생했다.
RestTemplate는 빈으로 등록되어 사용중이었는데 빈의 내용이 변경되었다.
변경 내용은 timeout이 없던 RestTemplate에 timeout을 설정
- 변경 전
@Bean public RestTemplate restTemplate() { return new RestTemplate(); }- 변경 후
@Bean public RestTemplate restTemplate() { HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(); httpRequestFactory.setConnectionRequestTimeout(HTTP_REQUEST_TIMEOUT); httpRequestFactory.setConnectTimeout(HTTP_REQUEST_TIMEOUT); httpRequestFactory.setReadTimeout(HTTP_REQUEST_TIMEOUT); return new RestTemplate(httpRequestFactory); }
서버정보에 뒤에 포트정보를 포함하여 요청하고 있었다.
POST https://stdoc.remotemeeting.com:443/path해당 RestTemplate를 사용하는 부분은 문제가 없는 운영서버와 동일한 코드이다. RestTemplate 빈만 변경되었다.
포스트맨등을 사용했을때 포트정보를 포함하면 증상가 동일한 503 에러가 발생한다.
해결
RestTemplate의 기본 생성자로 생성하게되면 SimpleClientHttpRequestFactory 구현체를 사용하게 된다.
- 이 구현체는 HttpUrlConnection을 이용한다.
빈 설정을 했던 HttpComponentClientHttpRequestFactory 구현는 Apache에서 제공하는 HttpClient를 사용한다.
따라서 기존 설정 (기본 생성자)에서 사용했던 SimpleClientHttpRequestFactory로 구현체를 변경하고 timout을 설정해주었다.
@Bean public RestTemplate restTemplate() { SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); factory.setConnectTimeout(HTTP_REQUEST_TIMEOUT); factory.setReadTimeout(HTTP_REQUEST_TIMEOUT); return new RestTemplate(factory); }문제해결
728x90
'Debug' 카테고리의 다른 글
| orphanRmoval 적용안됨 이슈 (0) | 2021.08.09 |
|---|---|
| JWT token - the token can't be used before ~ 오류 발생 (0) | 2020.12.30 |
| @Scheduled 실행 시, Transaction처리 (0) | 2020.12.30 |
| Spring에 commons-dbcp2 쓸 때, BasicDataSource 문제 (0) | 2020.12.30 |
| 인증 시, UsernameNotfoundException 발생 안함 문제(BadCredentials Exception만 발생) (0) | 2020.10.27 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday