【问题标题】:Spring Boot app on localhost: connection refused本地主机上的 Spring Boot 应用程序:连接被拒绝
【发布时间】:2020-05-22 12:02:12
【问题描述】:

我有一个 Spring Boot 应用程序,它 80% 的时间都运行良好。

但是,在另外 20% 中,我在 localhost 上收到“拒绝连接”错误。我尝试过的:

  • 更改端口
  • 完全关闭 Windows Defender/防火墙
  • 正在重新启动

没有任何作用。然后,当我让应用程序运行一段时间后,它突然又开始工作了。

您可能知道这对我的工作流程非常不利。我只对 Spring Boot 应用程序有过这个问题。

但是,如果我检查日志,则在尝试连接时不会记录任何内容:这些连接尝试甚至不会到达我的应用程序。我在 Windows 10 下的嵌入式服务器上运行。

可能是服务器阻止了传入连接,如果是,为什么?

这里的一切都在本地主机上运行。基本上试图用chrome打开我的spring boot应用程序。然而,chrome 和本地网络上的任何东西都无法访问我的 spring boot 应用程序。

有什么想法可以继续进行吗?

【问题讨论】:

  • 你在哪个端口上运行它?另外,您用于 Spring Boot 的底层 Web 服务器是什么?它是否在所有接口上监听?你在多少个网络接口上?这是什么版本的 Java?
  • 尝试了很多端口。通常我在 8580 上运行它。Wireshark 向我显示连接尝试,但从来没有任何答案。服务器是一个嵌入式 tomcat。 tomcat 访问日志为空。我通过以太网在一个网络上。运行 Java 8。
  • 您是否也在默认端口 - 8080 中尝试过这个?他也有同样的问题吗?
  • 你试过开启调试日志吗?
  • 是的,tomcat 日志处于调试模式。控制台和日志文件中没有任何内容。 Spring 日志在其他情况下运行良好,但在这些情况下它们不会显示任何传入连接。当它运行良好时,我可以在所有日志中正常看到请求/响应。

标签: java spring spring-boot


【解决方案1】:

我已经弄清楚了这一点,所以事实证明,如果您使用 Quartz 进行任务调度,Quartz 将以某种方式阻止您的传入请求,直到它处理所有应该在服务器关闭时触发的触发器。因此,您在运行之间等待的时间越长,您在 Quartz 自行修复时等待的时间就越长。本地工作的解决方案是简单地关闭 Quartz,除非您正在调试 Quartz 本身。

超级奇怪,我花了几个月才明白。

【讨论】:

    猜你喜欢
    • 2020-03-14
    • 2014-05-31
    • 2016-01-27
    • 2015-12-12
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多