我们使用 RapidclipseX 创建了一个应用程序,并使用 PostgreSQL 作为数据库。下面是我对 peristance.xml 的初始设置。
property name="hibernate.hbm2ddl.auto" value="none" />
<property name="javax.persistence.sharedCache.mode" value="ENABLE_SELECTIVE" />
<property name="hibernate.c3p0.max_size" value="50000" />
<property name="hibernate.c3p0.idle_test_period" value="300" />
<property name="hibernate.c3p0.max_statements" value="100" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL95Dialect" />
<property name="hibernate.cache.use_query_cache" value="true" />
<property name="hibernate.c3p0.min_size" value="1" />
<property name="hibernate.default_schema" value="canavans" />
<property name="rap.queryCache.mode" value="ENABLE_SELECTIVE" />
<property name="hibernate.archive.autodetection" value="" />
<property name="hibernate.cache.use_second_level_cache" value="true" />
<property name="hibernate.c3p0.timeout" value="3000" />
<property name="hibernate.transaction.auto_close_session" value="false" />
<property name="hibernate.javax.cache.uri" value="classpath:ehcache.xml" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.jcache.JCacheRegionFactory" />
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="hibernate.generate_statistics" value="false" />
<property name="hibernate.auto_quote_keyword" value="true" />
<property name="hibernate.globally_quoted_identifiers" value="true" />
当我们开始生产时,我们开始收到一个错误:“获取测试 - 池已被最大化。”
然后我添加了这两行:
<property name="hibernate.c3p0.unreturnedConnectionTimeout" value="120" />
<property name="hibernate.c3p0.debugUnreturnedConnectionStackTraces" value="true" />
一段时间以来,它解决了我们的问题。但是现在,在我们导入旧数据库之后,我们开始得到一个新的错误:
2020-11-25 16:44:11 DEBUG DefaultConnectionTester:207 - Testing a Connection in response to an Exception:
org.postgresql.util.PSQLException: This connection has been closed.
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.handleAndClearWarnings(SqlExceptionHelper.java:299)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.logAndClearWarnings(SqlExceptionHelper.java:269)
2020-11-25 16:44:11 DEBUG NewPooledConnection:207 - com.mchange.v2.c3p0.impl.NewPooledConnection@614f3f61 invalidated by Exception.
当我用谷歌搜索这个问题时,我发现:Maxed out the question that I've implemented(这两行)的解决方案可能是新异常的问题。
我还发现了连接泄漏问题。我试图在 DAO 中关闭 entityManager,但是当我添加任何 JPA-SQL 查询并加载 Java 文件时,这些行就会消失。
请帮助我如何一劳永逸地解决这个问题。有没有有效的方法来做到这一点?我们必须一次又一次地重新启动我们的生产应用程序。
我非常感谢您能提供的任何帮助。