当我尝试在我的 Service 类中执行一个 get All 方法时,该方法使用一个带有令牌的 feignClient ,这个异常被抛出:
无法调用请求:javax.net.ssl.SSLHandshakeException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
1)THIS IS MY FEIGNCLIENT
@FeignClient(name = "feignClient", url = "https://xxxxx:xxxx")
public interface FeignClientInfluxDB {
@RequestMapping(method = RequestMethod.GET, value = "/query?db=edms_db&q=SELECT * FROM M_M_table WHERE time > now() - 6m LIMIT 5")
List<MMEntity> getAllDataFromInfluxDBwithTimeCondiction(
@RequestHeader(name = "Authorization") String token);
}
2)THIS IS the METHOD THAT I USE TO TAKE TOKEN FROM KEYCLOAK
protected String getAuthToken() {
Keycloak keycloak = KeycloakBuilder.builder().serverUrl(keycloakAuthLinkInflux).realm(keycloakRealmInflux)
.grantType(OAuth2Constants.CLIENT_CREDENTIALS).clientId(keycloakClientInflux)
.clientSecret(keycloakClientSecretInflux).build();
return "Bearer " + keycloak.tokenManager().getAccessTokenString();
}
3)THIS IS THE METHOD ON MY SERVICE CLASS
@Transactional
public List<MMEntity> getAllWithFeignClientWithCondiction(String token) {
final String methodName = "getAllWithFeignClientWithCondiction()";
try {
this.startLog(methodName);
List<MMEntity> result = new ArrayList<MMEntity>();
token = getAuthToken();
result = feignClient.getAllDataFromInfluxDBwithTimeCondiction(token);
logger.info("Request Successful");
if (!result.isEmpty()) {
for (MMEntity mmEntity: result) {
MMEntityPstgrs mmEntityPstgrs = new MMEntityPstgrs ();
mmEntityPstgrs = ConvertersUtils
.createMMEntityPstgrsFromMMEntity(
mmEntity);
mMDao.save(mMEntityPstgrs);
logger.info("Table Updated");
}
}
this.endLog(methodName, result);
return result;
} catch (final Exception e) {
this.errorLog(methodName, e);
throw e;
}
}
我该怎么做才能解决问题?请帮我