小编Uro*_* T.的帖子

带有JDK11的Kubernetes中的Spring Boot随机“SSLException:Connection reset”

语境:

  • 我们有一个 Spring Boot (2.3.1.RELEASE) 网络应用程序
  • 它是用 Java 8 编写的,但在带有 Java 11 ( openjdk:11.0.6-jre-stretch)的容器内运行。
  • 它有一个数据库连接和一个通过 https 调用的上游服务(简单的 RestTemplate#exchange 方法)(这很重要!)
  • 它部署在 Kubernetes 集群内部(不确定这是否重要)

问题:

  • 每天,我都会看到一小部分对上游服务的请求因以下错误而失败: I/O error on GET request for "https://upstream.xyz/path": Connection reset; nested exception is javax.net.ssl.SSLException: Connection reset
  • 错误是完全随机的,并且间歇性地发生。
  • 我们有一个与javax.net.ssl.SSLProtocolException: Connection resetJRE11 相关的类似错误 ( ),它是 TLS 1.3 协商问题。我们已将 Docker 映像更新为上述内容并修复了它。
  • 这是错误的堆栈跟踪:
java.net.SocketException: Connection reset
    at java.base/java.net.SocketInputStream.read(Unknown Source)
    at java.base/java.net.SocketInputStream.read(Unknown Source)
    at java.base/sun.security.ssl.SSLSocketInputRecord.read(Unknown Source)
    at java.base/sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(Unknown Source)
    at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(Unknown Source)
    at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(Unknown Source)
    at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)
    at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153) …
Run Code Online (Sandbox Code Playgroud)

java ssl spring resttemplate

7
推荐指数
3
解决办法
3690
查看次数

grails 4.x:使用自定义环境创建 WAR 始终在开发中运行

我无法让我的自定义环境在 Tomcat 下运行。它始终加载开发配置文件。

我在 Grails 4.0.5 下创建了一个包含以下内容的 WAR:

grails -Dgrails.env=qa war 
Run Code Online (Sandbox Code Playgroud)

生成的 grails.build.info 看起来是正确的:

info.app.version=2.0.7
info.app.name=myapp
grails.env=qa
info.app.grailsVersion=4.0.5
Run Code Online (Sandbox Code Playgroud)

但是,当我将其放入 Tomcat 8 并运行时,我得到以下信息:

 [ost-startStop-1] com.myapp.ApplicationLoader        : The following profiles are active: development
Run Code Online (Sandbox Code Playgroud)

不过,独立运行效果很好:

./gradlew -Dgrails.env=qa bootRun 
Run Code Online (Sandbox Code Playgroud)

java grails grails-4

2
推荐指数
1
解决办法
814
查看次数

RestTemplate,Spring启动,POST

我在localhost:8086 / addMessage处有一个REST API,当我使用POSTMAN测试它时可以使用。但是,当我想在客户端上集成此api时,它将返回:

java.net.URISyntaxException: Expected scheme-specific part at index 10: localhost:
    at java.net.URI$Parser.fail(URI.java:2848) ~[na:1.8.0_171]  error:
Run Code Online (Sandbox Code Playgroud)

这是我调用api的方法:

  public void addOrder(Message orders) throws  Exception
    {  RestTemplate restTemplate = new RestTemplate();
      String resp = restTemplate.postForObject(
                "localhost:8086/addMessage",
                orders,
                String.class);    
    }
Run Code Online (Sandbox Code Playgroud)

我该怎么解决。

api post spring httpclient

1
推荐指数
1
解决办法
426
查看次数

标签 统计

java ×2

spring ×2

api ×1

grails ×1

grails-4 ×1

httpclient ×1

post ×1

resttemplate ×1

ssl ×1