首页 > 解决方案 > 随后调用 REST Endpoint 错误

问题描述

我从我的代码中调用同一应用程序的 2 个端点,第一个成功但第二个调用出错。这仅发生在 unix 机器上,而不发生在本地机器上。

我正在使用 resttemplate 并且在 sslContext 中我设置了密钥库/信任库证书

unix 盒子是否需要任何其他配置,或者我在这里完全遗漏了其他东西。

最新的 Spring 版本提供 WebClient 作为 restTemplate 的替代方案,但我不是在寻找异步 REST 调用。

PFB 日志

org.springframework.web.client.ResourceAccessException: I/O error on GET request for "<base_uri>/<path_to>/<endpoint>": 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: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:785) ~[spring-web-5.3.8.jar!/:5.3.8]
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:751) ~[spring-web-5.3.8.jar!/:5.3.8]
    at org.springframework.web.client.RestTemplate.getForEntity(RestTemplate.java:377) ~[spring-web-5.3.8.jar!/:5.3.8]  
    at java.util.HashMap.forEach(HashMap.java:1336) [?:?]   
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:791) [spring-boot-2.5.1.jar!/:2.5.1]
    at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:775) [spring-boot-2.5.1.jar!/:2.5.1]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:345) [spring-boot-2.5.1.jar!/:2.5.1]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) [spring-boot-2.5.1.jar!/:2.5.1]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332) [spring-boot-2.5.1.jar!/:2.5.1]  
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) []
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) []
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)

标签: javaspringrestresttemplate

解决方案


推荐阅读