java - 随后调用 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)
解决方案
推荐阅读
- flutter - 从 json 中获取数据并将它们放入 TextFields
- amazon-web-services - 如何将 Okta 配置为 AWS Cognito 身份池的 SAML IdP?
- c# - Open XML SDK:如果启用了更改,则不跟踪程序化文本更改
- c# - 传递给 Task.WaitAll() 的任务会在不同的上下文中运行吗?
- java - 尽管 Pixel 2 存在于传感器列表中,但无法在 Pixel 2 上获取磁场传感器
- cordova - 如何在我的 react 本机版本的应用程序中访问在 cordova/phonegap 应用程序中创建的 localStorage 中的数据?
- ios - 使用 Swift 中的块调用 Objective C 方法
- r - 如何修复“`$<-.data.frame` 替换错误有 x 行,数据有 y”?
- matlab - Traci4matlab:如何解决“使用 traci.socket 时出错”?
- javascript - 在 IE、Edge 和 Chrome 上单击提交按钮后,Flask 应用程序不会执行(仅在 Firefox 上)