PostgreSQL 文档显示您可以在 JDBC 字符串中传递多个主机以用于 HA 设置(页面底部):https ://jdbc.postgresql.org/documentation/head/connect.html
我的设置有 3 个节点,每个节点都运行 PostgreSQL 服务器。我已经使用 pgpool-II 实现了 HA。有一个主节点和两个备用节点。
当我使用以下休眠属性时,效果很好:
<property name="hibernate.connection.url">jdbc:postgresql://10.200.0.50:5432,10.200.0.51:5432,10.200.52:5432/replicationtest</property>
我的应用程序连接到集群,如果说 10.200.0.50 关闭,它将使用其他地址之一。
但我的问题是,使用后:
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session s = sf.openSession();
如何从我的会话打开连接的 JDBC 连接字符串中检查哪个主机?
编码:
s.doWork(connection -> System.out.println(connection.getMetaData().getURL()));
只是给了我所有三个节点的原始 JDBC 字符串。