0

我正在尝试将 postgresql 与pgjdbc-ng (0.8.9) 连接以进行异步侦听器。开发时一切正常,但我在 SIT 环境中连接超时。
SIT 中有一个 postgresql 13 服务器,强制客户端使用 ssl 连接,仅使用 tls 1.3。
这是代码:

@Bean
public PGConnection getPGConnection() throws SQLException {
    var connectionString = String
        .format("jdbc:pgsql://%s/%s?ssl.mode=require", host, database);
    return DriverManager
            .getConnection(connectionString, user, password)
            .unwrap(PGConnection.class);
}

这是堆栈跟踪打印出来的:

Cause by: java.io.IOException: Timeout starting connection
    at com.impossibl.postgres.protocol.v30.ServerConnectionFactory.startup
    ...

它让我感到困惑,因为只有来自上述代码的连接出现超时错误。Spring Data JAP(PostgreSQL JDBC Driver)的其他连接在同一应用程序中是完全正确的。最糟糕的是我无法在我的环境中繁殖。
起初我认为这是关于 tls 协议版本,因为应用程序需要在 1.0.1 中的 openssl 版本的机器上工作(不支持 tls 1.3)。但它认为不是因为其他连接正常工作。
我知道它没有被 postgres 用户的连接限制拒绝,因为它抛出了不同的异常。而且我尝试过使用不同的方式来获得连接,例如:

var dataSource = new PGDataSource();
dataSource.setUrl("jdbc:pgsql://host/dbname");
dataSource.setUser(user);
dataSource.setPassword(password);  
dataSource.setSslMode(SSLMode.Require.name());
var conn = dataSource.getConnection().unwrap(PGConnection.class);

它变成了相同的结果,在 SIT 环境中开发和失败。


有没有人有类似经历的?
或者请告诉我我应该与 DBApg_hba.conf或其他什么检查?
谢谢你。

4

0 回答 0