当前位置: 首页 > 面试题库 >

休眠c3p0断开的管道

邹嘉致
2023-03-14
问题内容

我正在将c3p0和hibernate
3用于程序,该程序不断从某些源中提取数据并将其写入数据库。现在的问题是,由于某些原因,数据库可能变得不可用(在最简单的情况下:我只是将其关闭)。

如果有什么要写入数据库,则不应有任何异常-
查询应等待所有永恒,直到数据库再次可用。如果我没记错的话,这就是连接池可以为我做的事情之一:如果数据库有问题,只需重试连接-在最坏的情况下,无限即可。

但是相反,我得到了一个损坏的管道异常,有时会被拒绝连接,然后将该异常传递给我自己的代码,这不应该发生。

即使我捕获到异常,如何再次干净地重新初始化hibernate?(到目前为止,没有c3p0我只是再次建立了会话工厂,但是如果这会泄漏连接(或者这样做可以吗?),我也不会感到惊讶。)

该数据库是Virtuoso开源版本。

我的hibernate.xml.cfg c3p0配置:

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>  
<property name="hibernate.c3p0.breakAfterAcquireFailure">false</property>
<property name="hibernate.c3p0.acquireRetryAttempts">-1</property>
<property name="hibernate.c3p0.acquireRetryDelay">30000</property>
<property name="hibernate.c3p0.automaticTestTable">my_test_table</property>

<property name="hibernate.c3p0.initialPoolSize">3</property>
<property name="hibernate.c3p0.minPoolSize">3</property>
<property name="hibernate.c3p0.maxPoolSize">10</property>

顺便说一句:测试表已创建,并且我得到了大量的调试输出-因此看来它实际上是在读取配置。


问题答案:

好吧,看来BoneCP实际上已经实现了这一点。可以将其设置为记录事务,并在网络或数据库出现故障时重播它:

http://jolbox.com/bonecp/downloads/site/apidocs/com/jolbox/bonecp/BoneCPConfig.html#setTransactionRecoveryEnabled(boolean)



 类似资料:
  • 问题内容: 在我的项目中,我开始将c3p0与hibernate一起用于重新连接到数据库,因为在数据库故障时hibernate不会恢复连接。 我正在使用休眠版本: postgresql驱动程序是: c3p0的配置是: 但我不断收到此错误: 我必须注意,我不是在自称自己! 那么,为了在Tomcat 7启动期间摆脱此错误,我该改变谁呢?我还从tomcat的lib目录中删除了PostgreSQL驱动程序。

  • 问题内容: MySQL似乎在其连接上有8个小时的超时。我正在使用Hibernate for ORM在Tomcat中运行多个WAR。8小时(即通宵)后,当它拾取空闲连接时,管道破裂。 我已经遍历了代码,并确保我提交或回滚了所有事务。 这是我的hibernate.cfg.xml 我认为可以解决的参数是--默认为0。但是,运行8小时后,我们仍然遇到断管问题。尽管有多个通过Google发布的帖子索引,但没

  • 问题内容: 问题: Hibernate未正确执行查询。它因似乎与slf4j相关的问题而出错,但使用任何建议的修复程序似乎均无效。 我已经为createQuery调用尝试了各种变量名组合,希望我做的是Doing It Wrong(TM),但到目前为止还没有碰到运气。这个问题真的让我感到难过,有人遇到过类似的事情吗? 堆栈跟踪: Maven依赖树: PostgreSQL数据库: UserInterfa

  • 问题内容: 我有一个hibernate映射,该映射一直工作到最近-尽管我确定这是我所做的某些更改的结果,但我似乎找不到它。 映射文件将字段定义为: 该类将该字段定义为: 运行此代码时,出现以下错误: 与此对应的数据库字段定义为: 我还有其他几个具有相似结构和定义的类,并且它们没有问题。但是,可能由于我最近所做的一些更改而导致,此特定映射将不再正常工作。 有什么建议么? 问题答案: 我不确定,但是您

  • 问题内容: 我收到了一个我无法解释的奇怪的Hibernate异常。告诉我我正在使用二级缓存,但是没有在哪里指定二级缓存。这是例外: 而我的: 有什么想法会触发此异常吗?提前致谢! 问题答案: Pau在hibernate.cfg.xml中写了hibernate.cache.region.factory_class: 唯一的例外是不言而喻的。您必须设置 属性。例如,使用ehcache将添加以下行: n

  • 问题内容: 有人可以透视一下JPA和Hibernate之间的区别吗?还是将这些互补的概念一起使用? 问题答案: 大致来说,JPA是java社区的一个标准,这里是specs,它是由Hibernate家伙实现(并扩展)的(此处提供一些信息)。作为规范,您将不会直接使用JPA,而是使用JPA实现。 请注意,如果要使用hibernateJPA扩展,将破坏与其他JPA实现的兼容性(尽管有些人会说“为什么要使