0

代码适用于一个系统,但同样不适用于另一个系统。

@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]
 

我有以下问题

  1. 为什么会这样?是java版本的原因吗?或者它可能是一些防火墙?
  2. 有些人建议我应该使用 SSL 证书,我不想管理它,因为 URL 或域会不断变化(动态),有没有自动的方法呢?如果 SSL 证书是必须的,我们可以通过编程方式下载它并从 URL 使用它吗?
4

0 回答 0