代码适用于一个系统,但同样不适用于另一个系统。
@FeignClient(name="TodoApi", url = "https://jsonplaceholder.typicode.com")
public interface TodoApi {
@GetMapping("/todos/{id}")
ToDo findById(@PathVariable("id") Integer id);
}
工作系统1
java version "14.0.2" 2020-07-14
Java(TM) SE Runtime Environment (build 14.0.2+12-46)
Java HotSpot(TM) 64-Bit Server VM (build 14.0.2+12-46, mixed mode, sharing)
工作系统2
java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)
它不起作用的地方
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
pom配置
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
...
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
</properties>
...
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
抛出以下异常
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210) ~[na:1.8.0_271]
at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_271]
at sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:475) ~[na:1.8.0_271]
at sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:469) ~[na:1.8.0_271]
我有以下问题
- 为什么会这样?是java版本的原因吗?或者它可能是一些防火墙?
- 有些人建议我应该使用 SSL 证书,我不想管理它,因为 URL 或域会不断变化(动态),有没有自动的方法呢?如果 SSL 证书是必须的,我们可以通过编程方式下载它并从 URL 使用它吗?