【问题标题】:No more connection with c3p0不再与 c3p0 连接
【发布时间】:2015-11-20 14:11:47
【问题描述】:

自从我决定使用 c3p0 池以来,我遇到了连接问题。

persistence.xml

            <property name="hibernate.connection.url" value="jdbc:mysql://***.***.***.***:****/*****"/>
            <property name="hibernate.connection.username" value="****"/>
            <property name="hibernate.connection.password" value="****"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.show_sql" value="true" />
<!--            <property name="hibernate.connection.provider_class" value="org.hibernate.c3p0.internal.C3P0ConnectionProvider" /> -->
<!--            <property name="hibernate.c3p0.min_size" value="1"/> -->
<!--            <property name="hibernate.c3p0.max_size" value="50"/> -->
<!--            <property name="hibernate.c3p0.timeout" value="10000"/> -->
<!--            <property name="hibernate.c3p0.max_statements" value="100"/> -->
<!--            <property name="hibernate.c3p0.idle_test_period" value="300"/> -->

有了这个配置,一切正常。当我取消注释 c3p0 属性时,我什至无法连接到我的应用程序。

try {               
    user = UserDAO.connect(login,Tools.encode(password));
}
 catch (SQLException e) {   
    e.printStackTrace();
    logger.error(utils.Constants.GENERAL_ERROR);
    message=utils.Constants.LOGIN_KO;
}
finally{
//some code
}

我尝试在调试中运行此代码。我在每个块上都有一个断点。程序直接从try到finally。 以下是日志:

2015-08-26 15:27:50 INFO  LogHelper:46 - HHH000204: Processing PersistenceUnitInfo [
name: ****
...]
2015-08-26 15:27:53 INFO  Version:54 - HHH000412: Hibernate Core {4.3.6.Final}
2015-08-26 15:27:53 INFO  Environment:239 - HHH000206: hibernate.properties not found
2015-08-26 15:27:53 INFO  Environment:346 - HHH000021: Bytecode provider name : javassist
2015-08-26 15:27:56 INFO  Version:66 - HCANN000001: Hibernate Commons Annotations {4.0.5.Final}
2015-08-26 15:27:56 INFO  ConnectionProviderInitiator:190 - HHH000130: Instantiating explicit connection provider: org.hibernate.c3p0.internal.C3P0ConnectionProvider
2015-08-26 15:27:56 INFO  C3P0ConnectionProvider:117 - HHH010002: C3P0 using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://***.***.***.***:****/*****
2015-08-26 15:27:56 INFO  C3P0ConnectionProvider:118 - HHH000046: Connection properties: {user=****, password=****}
2015-08-26 15:27:56 INFO  C3P0ConnectionProvider:121 - HHH000006: Autocommit mode: false

我看到日志中有这一行

Environment:239 - HHH000206: hibernate.properties not found

但我不明白它来自哪里以及是否是问题的原因。 我已经看过了 how to fix the error: "INFO: HHH000206: hibernate.properties not found"? 和类似的帖子

@Maciej Dobrowolski 我不使用 Maven,所以我没有 pom.xml(我不会解释为什么在这里它不相关) 这是我在类路径中的罐子:

 /WebContent/WEB-INF/lib/hibernate-c3p0-5.0.0.Final.jar
 /WebContent/WEB-INF/lib/hibernate-commons-annotations-4.0.5.Final.jar
 /WebContent/WEB-INF/lib/hibernate-core-4.3.6.Final.jar
 /WebContent/WEB-INF/lib/hibernate-entitymanager-4.3.6.Final.jar
 /WebContent/WEB-INF/lib/hibernate-jpa-2.1-api-1.0.0.Final.jar
 /WebContent/WEB-INF/lib/c3p0-0.9.5.1.jar

【问题讨论】:

  • 如果在默认配置下一切正常,为什么要更改它?
  • 我需要为池化属性添加 c3p0
  • 未创建 hibernate.properties 不是问题,因为您使用 persistence.xml 来定义您的属性。找不到名为hibernate.properties 的文件,因此控制台中有一条消息。就是这样。
  • 您也可以发布您的pom.xml 文件的内容吗?我的意思是与休眠和 c3p0 相关的行

标签: java mysql hibernate c3p0


【解决方案1】:

这可能很愚蠢,但我认为您需要补充:

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

根据您的配置,我希望这对您有用,

【讨论】:

  • 对不起,我无法测试你的答案。如果它适用于其他人并且他们支持你,我会验证答案
猜你喜欢
  • 2013-08-20
  • 2016-09-16
  • 2011-10-23
  • 2023-04-07
  • 2011-01-07
  • 2011-07-19
  • 1970-01-01
  • 2012-10-26
  • 2016-07-08
相关资源
最近更新 更多