当前位置: 首页 > 知识库问答 >
问题:

当主数据库失败时切换到Hibernate中的其他数据库

司寇书
2023-03-14

我正在使用hibernate从数据库中获取数据。我们有20个节点的oracle RAC数据库。

现在的问题是,如果数据库的一个节点失败,我必须在运行时切换到另一个节点,而应用程序不会抛出错误,如果该节点关闭,我必须像wise一样切换到第三个节点。

当我们使用传统的JDBC风格建立连接时,可以很容易地完成,因为当与节点的连接失败时,连接对象将为null

这就是我创建会话工厂的方式,

私有静态最终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)))

我花了两天的时间挠头,想知道如何才能做到这一点。

共有1个答案

仲孙奇
2023-03-14

我建议当你打开一个会话时,你应该做一个断言(Java断言),比如读取会话状态(只读或其他),这样你就可以检查连接是否处于活动状态,根据断言,你可以尝试为另一个节点获取不同的会话。

此链接可能会对您有所帮助(做出断言):

https://forum.hibernate.org/viewtopic.php?f=1

希望它有帮助;-)

 类似资料:
  • 我在MySQL上有2个数据库。ge和GE_SC001。 我可以通过我的ASP.NET mvc应用程序在本地访问这两个。 Web.config null 稍后,当我在web服务器上部署应用程序,并尝试从本地机器访问它们时。我将server=localhost更改为机器的面向外部的IP地址。现在我只能访问一个GE。当我尝试访问第二个时,它会给我错误。 拒绝用户“root”@“对数据库”GE_SC001

  • 简介 在 Swoft 2.0.2 版本之前,连接池中没有数据库切换功能,这导致了不同数据库需要配置多个连接池,大大增加了维护成本。所以在 2.0.2 开始新增了切换数据库功能。你可以在链式操作中使用 db() 方法进行指定,这显然不够灵活难以维护,下面推荐一个根据上下文切换数据的操作。 Swoft 版本需 >= 2.0.2 DbSelector 实现 使用 DbSelector 需实现 Swoft

  • 很多时候,我们需要操作不同的数据库。 首先,需要定义不同的数据表连接配置,配置文件中:     //默认Mysql数据库 'default_mysql_config' => 'mysql', //g-framework数据库配置 'mysql' => array( 'host'  => 'localhost', 'port' => '3306', 'username' => 'root', 'pa

  • 我正在尝试使用SAS的集成对象模型(sasiom JDBC)从Tableau获取到SAS的其他数据库(JDBC)连接,但遇到以下错误: 错误: 配置详情 到目前为止,我相信我的配置是正确的,但是我认为Tableau没有确定在连接到SAS的JDBC时使用的正确驱动程序类。 从较高的层次来看,JDBC与SAS的连接是这样的: JDBC连接字符串: 驱动程序类名: Tableau要访问的驱动程序jar文

  • 我想用Python对数据进行切片。分割数据帧的基本任务会给我带来意想不到的错误。 我的代码是: 代码应显示第二列的第二行。 错误消息: 文件“pandas_libs\hashtable_class_helper.pxi”,第1500行,在pandas中_图书馆。哈希表。PyObjectHashTable。get_项键错误:(1,1) 在处理上述异常期间,发生了另一个异常: 回溯(最近一次调用):文

  • 当我使用此配置(连接到本地DB)时-一切正常: 我唯一更改的是另一台机器的IP,而我总是得到相同的错误: 这是我得到的错误: 最后一个成功发送到服务器的数据包是在0毫秒前。驱动程序没有从服务器接收到任何数据包。在Sun.Reflect.NativeConstructorAccessorImpl.NewInstance0(原生方法)在Sun.Reflect.NativeConstructorAcce