我正在使用休眠从数据库中获取数据。我们有 20 多个节点的 oracle RAC 数据库。
现在的问题是,如果数据库的一个节点发生故障,我必须切换到另一个节点,在运行时没有应用程序抛出错误,如果该节点已关闭,我必须切换到第三个节点。
当我们使用传统的 JDBC 方式建立连接时,它可以很容易地完成,因为当与节点的连接失败时,连接对象将为空。
这就是我创建会话工厂的方式,
私有静态最终SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory()
{
try
{
return new Configuration().configure("database.cfg.xml").buildSessionFactory();
}
}
这就是获取会话的方式,
session = HibernateUtil.getSessionFactory().openSession();
现在,我如何确定节点已关闭,以便我可以尝试连接到备用节点。
我不能使用以下类型的配置,因为我所有的节点 sid 都不同
jdbc:oracle:thin:@(description=(address_list=(load_balance=on)(failover=on) (address=(protocol=tcp)(host=host1)(port=1521))(address=(protocol=tcp)(host=host2)(port=1521)))(connect_data=(service_name=xxxxsid)(failover_mode=(type=select)(method=basic)))
我从 2 天开始就摸不着头脑,想知道如何才能做到这一点。