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

Hibernate DB连接池C3P0出了问题

莘俊能
2023-03-14
问题内容

自上次发布以来,是否提出了所有建议的更改,但此问题仍然困扰着我。这是我得到的错误:

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 44,499,102 milliseconds ago.

这是我的hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>

    <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>        
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>        
    <property name="connection.autoReconnect"> true</property>
    <property name="connection.autoReconnectForPools">true</property>
    <property name="connection.is-connection-validation-required">true</property>

    <property name="hibernate.c3p0.acquire_increment">5</property> 
    <property name="hibernate.c3p0.max_size">150</property>
    <property name="hibernate.c3p0.max_statements">0</property>
    <property name="hibernate.c3p0.min_size">10</property>
    <property name="hibernate.c3p0.timeout">100</property> <!-- seconds --> 
    <property name="hibernate.c3p0.idle_test_period">30</property> <!-- seconds -->

    <property name="hibernate.connection.url">jdbc:mysql://!secret!autoReconnect=true</property>
    <property name="hibernate.connection.username">!secret!</property>
    <property name="hibernate.connection.password">!secret!</property>


    <!-- <property name="hibernate.connection.pool_size">10</property> -->

    <property name="show_sql">true</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.hbm2ddl.auto">update</property>
    <property name="current_session_context_class">thread</property>

    <!-- Mapping files -->
    <mapping resource="mappings.hbm.xml"/>
</session-factory>
</hibernate-configuration>

和c3p0.properties

c3p0.preferredTestQuery=select 1 from dual
c3p0.maxConnectionAge=3600
c3p0.testConnectionOnCheckin=true
c3p0.testConnectionOnCheckout=true
c3p0.acquireRetryDelay=1000
c3p0.acquireRetryAttempts=30
c3p0.breakAfterAcquireFailure=false
c3p0.idleConnectionTestPeriod=100

问题答案:

对于我来说,您配置的c3p0错误。

诸如c3p0.preferredTestQuery之类的属性必须位于类路径中的c3p0.properties文件中(例如WEB-INF /
classes)。

下面是我的c3p0.properties文件的示例,该示例对Oracle很好用:

c3p0.preferredTestQuery=SELECT 1 from dual
c3p0.maxConnectionAge=3600
c3p0.testConnectionOnCheckout=true
c3p0.acquireRetryDelay=1000
c3p0.acquireRetryAttempts=30
c3p0.breakAfterAcquireFailure=false

另见C3P0官方文档在这里。

并且请注意使用的c3p0版本。他们在c3p0 0.9的早期版本中恢复连接时遇到问题。



 类似资料:
  • 我正在使用resin服务器+spring框架和c3p0连接池。我已经使用以下属性文件配置了连接池。但不知怎的,每隔24小时左右,我的网站就会出现连接超时错误,然后我不得不重新启动我的resin服务器,让网站重新运行。请告诉我在下面的配置文件中有什么错误,以及我在这里缺少了什么。

  • 问题内容: 要指定SQLite连接属性,请使用org.sqlite.SQLiteConfig,它的内容如下: 使用c3p0创建连接池的过程如下: 问题:如何创建结合了两者的数据源,让我设置诸如连接池的最大池大小和sqlite的同步模式之类的东西? 问题答案: 尝试 现在,数据源将是c3p0 PooledDataSource,它包装了已根据需要配置的SQLite未池化数据源。 请参阅C3P0的文档,

  • 我有一个使用Struts1.3、Hibernate3和Spring Security开发的web应用程序。由于MySQL在此时间之后关闭了连接,该应用程序在8小时后就停止了运行。然后我从几个帖子中收集信息,使它保持很长时间,现在差不多是20-24小时。有没有人能帮我把这东西弄好。 摘要 Iam在不活动20小时后无法登录。连接被MySQL关闭。 多谢了。 C3p0日志 INFO AbstractPo

  • 问题内容: 如果我在闲置了一段时间后启动应用程序,那么我曾经遇到以下错误。(我正在使用Spring + Hibernate + MySQL作为DB) 我通过将以下内容添加到我的servlet-context.xml中解决了这个问题。 我在这里问了这个问题,这个问题是解决方案所特有的。我需要知道为什么会遇到这个错误。 我尝试了上面链接中提供的第一个选项(使用autoReconnect = true配

  • 问题内容: 对于J2EE容器 之外 的Java应用程序,哪个连接池库是最好的? 我听说c3p0已经过时了。 雅加达的公共池库已不再开发 因此,我只剩下BoneCP和DBPool了。从我可以看出,两者活动有限。我可以看到的主要区别是性能,BoneCP似乎可以与之抗衡。但是,文档非常薄弱。 您在现实世界中使用了哪个数据库池库,为什么?好的和坏的是什么? 问题答案: 在工作中,我们使用了BoneCP(作

  • 问题内容: 可用于Java / JDBC的最佳连接池是什么? 我正在考虑2个主要候选人(免费/开源): Apache DBCP- http://commons.apache.org/dbcp/ C3P0- http://sourceforge.net/projects/c3p0 我已经在博客和其他论坛上阅读了很多有关它们的内容,但无法做出决定。 这两个有其他相关选择吗? 问题答案: DBCP已过时