【问题标题】:Getting "connection timeout" instead of "connection refused"获取“连接超时”而不是“连接被拒绝”
【发布时间】:2020-03-03 17:20:39
【问题描述】:

我正在测试我的应用程序,它从数据库中请求一些数据。如果数据库关闭并安装在本地主机上,我会立即得到Connection refused,但是当数据库在远程机器上运行时Connection timeout 会发生。有什么区别? 我正在使用 apache BasicDataSource 获取连接。

【问题讨论】:

    标签: java database-connection apache-commons-dbcp


    【解决方案1】:

    连接被拒绝意味着服务根本不可用。参考What can be the reasons of connection refused errors?帖子。

    Connection timeout 是必须在客户端和服务器之间建立连接的时间段。如果由于某种原因未建立,您的代码在重试后会引发此异常。 https://itstillworks.com/server-connection-timeout-mean-22703.html 可以给你一些见解。

    本地主机与远程:

    在远程机器上,机器充当代理,即机器正在运行,但底层服务无法通过网络访问。虽然在 localhost 上说 localhost:port is down 连接被立即拒绝并且没有尝试等待连接。(虽然如果你的机器已经启动了服务但连接建立不成功你会超时)

    【讨论】:

    • 感谢您的回答@Vinay Prajapati!但是我仍然不明白为什么在类似情况下错误会有所不同?代码是一样的,数据库的两个实例是一样的,并且是类似的DOWN。问题更多的是“当连接到本地主机和远程计算机上的数据库时,为什么会出现不同的错误?”
    • 它与本地和远程无关。很可能与防火墙未打开端口有关。
    猜你喜欢
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多