API에 대한 RestTemplate 호출이 있습니다 (get). 이 호출은 GET 유형의 유일한 호출이며 프록시를 통과합니다. 때때로 일주일 동안 호출이 "sun.security.validator.ValidatorException"예외와 함께 403 Forbidden을 반환하는 것 같습니다 .
Spring과 API 사이에 인증서가 있지만 인증서는 정상적으로 작동합니다 (애플리케이션은 하루 동안 수천 개의 "200 ok"를 반환합니다).
그러나 때때로이 호출 만 (POST 인 다른 호출이 아님) "403 Forbidden"을 리턴합니다.
우리는 다음을 수행했습니다.
- 프록시를 통해 컬로 Jmeter를 시작합니다 (모든 것이 정상인 것 같습니다)
- 테스트를 위해서만 TrustStore를 비활성화 (결과는 ko)
이것은 RestTemplate 코드입니다.
SSLConnectionSocketFactory socketFactory;
socketFactory = new SSLConnectionSocketFactory(new SSLContextBuilder()
.loadTrustMaterial(ResourceUtils.getFile(this.trustStorePath), this.trustStorePassword.toCharArray())
.loadKeyMaterial(ResourceUtils.getFile(this.keyStorePath), this.keystorePassword.toCharArray(),
this.keystorePassword.toCharArray())
.build(), NoopHostnameVerifier.INSTANCE);
CloseableHttpClient client = HttpClients.custom().setSSLSocketFactory(socketFactory).setProxy(host)
.disableCookieManagement().disableRedirectHandling().build();
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(client);
RestTemplate restTemplateVar = new RestTemplate(requestFactory);
그리고 이것이 부름입니다.
response = this.restTemplate.getForEntity(this.host, String.class);
- 동시 연결 수가 원인 일 수 있습니까?
- 왜 GET과 가끔씩 만 사용합니까?
- 그리고 마지막 : Httpconnection으로 RestTemplate을 변경하면 결과가 다를 수 있습니까?
미리 감사드립니다