서버의 SSL 인증서 교체 후 해당 서버와 다른 서버가 통신이 안되는 이슈가 발생! I/O error on POST request for "https://janes.shop:443": sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX..
외부 서버와 API로 통신하는데 응답 대기 시간이 오래 걸리는 경우에 타임아웃 시간을 임의로 늘려서 설정할 수 있다. HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); factory.setConnectTimeout(1000 * 30); factory.setReadTimeout(1000 * 30); RestTemplate rest = new RestTemplate(factory); 위 예제는 connect timeout과 read timeout을 30초로 설정하였다.
외부 API를 사용하여 제공 해야하는 서비스에서 외부 통신으로 인해 의도치 않게 대기시간이 길어져 사용자가 우리 서비스를 사용하는데 불편함이 발생했다. 해당 기능을 비동기 방식으로 전환하여 사용자가 페이지 이동을 하고도 작업이 이루어지고 나중에 상태가 변경되도록 작업하고 싶었다. 이 때 Spring에서 제공하는 @Async 어노테이션을 이용할 수 있다. 우선 @Async 어노테이션을 사용하기 위해서는 Configuration 클래스를 만들어 비동기 구성을 활성화시켜줘야한다. @Configuration @EnableAsync public class AsyncConfig { @Bean(name = "asyncExecutor") public Executor asyncExecutor() { ThreadPoolT..
앞 단에서 순서대로 저장해야 하는 데이터가 있어서 List로 파라미터를 받아놨는데 누군가 Set으로 바꿔놔서 순서대로 저장이 안된다는 이슈가 올라왔다. 왜 Set으로 바꿔놨을지 생각하다 아무래도 '중복 데이터를 받지 않기 위함이 아니었을까'가 내 머리로 떠오른 답! 하여 List로 다시 바꾼 후 distinct 함수를 이용해 중복 데이터를 제거해주었다. public int saveAll(int memberNo, List domains) { repository.removeAll(memberNo); domains.stream().distinct(); return repository.saveAll(memberNo, domains); }