c3p0.max_statements不设置等于0时报如下错误
INFO 2010-07-23 16:29:38,490 [com.mchange.v2.c3p0.stmt.GooGooStatementCache] - Problem with checked-in Statement, discarding.
java.lang.NullPointerException
##
<!-- 最大连接数 -->
<property name="hibernate.c3p0.max_size">20</property>
<!-- 最小连接数 -->
<property name="hibernate.c3p0.min_size">5</property>
<!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
<property name="hibernate.c3p0.timeout">120</property>
<!-- 最大的PreparedStatement的数量 -->
<property name="hibernate.c3p0.max_statements">0</property>
<!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒-->
<property name="hibernate.c3p0.idle_test_period">120</property>
<!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数 -->
<property name="hibernate.c3p0.acquire_increment">2</property>
<!-- 每次都验证连接是否可用 -->
<property name="hibernate.c3p0.validate">true</property>
==========================================
“SEVERE: The last packet successfully received from the server was144382 seconds ago.The last packet sent successfully to the server was 144382 seconds ago, which is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.”
你的log里说的很清楚了。原因是Mysql服务器默认的“wait_timeout”是8小时,如果一个connection空闲超过8个小时,Mysql将自动断开该 connection,而C3P0并不知道该connection已经失效,如果这时请求connection,将会造成上面的异常。你每次使用前判断connection是否有效就会避免这种异常。
解决的方法有3种:
增加wait_timeout的时间。
减少Connection pools中connection的lifetime。
测试Connection pools中connection的有效性。
当然最好的办法是同时综合使用上述3种方法,下面举个例子,假设wait_timeout为默认的8小时
C3P0增加以下配置信息:
//获取connnection时测试是否有效
testConnectionOnCheckin = true
//自动测试的table名称
automaticTestTable=C3P0TestTable
//set to something much less than wait_timeout, prevents connections from going stale
idleConnectionTestPeriod = 18000
//set to something slightly less than wait_timeout, preventing 'stale' connections from being handed out
maxIdleTime = 25000
//if you can take the performance 'hit', set to "true"
testConnectionOnCheckout = true
===================================
1、org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed.
问题:hibernate3默认的lazy为true,使用代理模式proxy属性允许延迟加载类的持久化实例。调用session.load()方法,Hibernate开始会返回CGLIB代理,除主键外的其他值均为null。当代理的某个方法被实际调用的时候, 真实的持久化对象才会被装载,但必须在同一个session中。如session.close()前一直未调用方法,close()后再调用,报上述错误。
解决:a.hbm.xml中 class项,加上lazy=false
b.使用session.get()方法,将不延迟,直接取出对象实例。
2、java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode.
问题:ms SQLserver在设置为autoCommit=false,SelectMethod=direct时,处理多个statement将报该错
解决:在url加上设置SelectMethod=Cursor
3、java.lang.NullPointerException: Problem with checked-in Statement, discarding.
问题:oracle9i前的jdbc Driver有bug,多个statement亦会出错
解决:在http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html上下载最新的ojdbc14.jar,版本为10.2.0.1.0
分享到:
相关推荐
<property name="hibernate.c3p0.max_statements">50 ``` - **作用**:限制每个连接上缓存的 PreparedStatement 的最大数量。这有助于减少内存消耗。 ##### 3.6 hibernate.c3p0.idle_test_period - **含义**:...
- `hibernate.c3p0.max_statements`: 最大预编译SQL语句数,可以提高执行效率。 - `hibernate.c3p0.idle_test_period`: 空闲连接检测间隔(秒),定期检查并关闭空闲超时的连接。 - `hibernate.c3p0.acquire_...
`hibernate.c3p0.max_statements`限制了预编译的SQL语句数量,这对于避免内存泄漏和提高执行效率很有帮助。 `hibernate.c3p0.idle_test_period`设定了检查连接池中空闲连接的周期,通过定期检查可以及时发现并清除...
8. **`hibernate.c3p0.max_statements`**: 最大预编译语句数。例如: ```properties hibernate.c3p0.max_statements=50 ``` 这个配置控制了连接池中可以保存的最大预编译SQL语句数。 #### 二、使用数据源配置 ...
- **`hibernate.c3p0.max_statements`**:定义每个连接的最大语句数。 #### 二、数据源配置(DataSource) 当应用环境中已经存在数据源时,可以通过以下配置项将Hibernate与之连接起来: 1. **`hibernate....
- `hibernate.c3p0.max_statements`: 每个连接可缓存的Statement的最大数量。 - `c3p0.min_size`: 连接池的最小连接数。 - `connection.driver_class`, `connection.url`, `connection.username`, `connection....
Default password for ifx_connect() (doesn't apply in safe mode). ifx.default_password = ; Allow or prevent persistent links. ifx.allow_persistent = On ; Maximum number of persistent links. -1 means...
<property name="hibernate.c3p0.max_statements" value="100" /> ``` ##### e. 检查空闲连接周期(`idle_test_period`) - **定义**:`idle_test_period` 参数决定了 C3P0 多久检查一次连接池中的空闲连接(以...
4. `c3p0.max_statements`:每个连接允许的最大预编译SQL语句数量,这里是100。 5. `c3p0.idle_test_period`:设定每3000毫秒检查一次闲置的连接,确保其有效性。 6. `c3p0.acquire_increment`:当连接池需要创建新...
They can be turned off using the values 0, Off, False or No. ; An empty string can be denoted by simply not writing anything after the equal ; sign, or by using the None keyword: ; foo = ; sets foo...
- `hibernate.c3p0.max_statements`:最大预编译SQL语句数。 3. **数据源属性**: - `hibernate.connection.datasource`:数据源的JNDI名字,适用于应用服务器中的数据源。 - `hibernate.jndi.url`:JNDI提供者...
复制到 pgsql-12/lib 目录下就可以了 然后修改 postgresql.conf shared_preload_libraries = 'timescaledb, pg_stat_statements...pg_stat_statements.max = 10000 pg_stat_statements.track = all 最后重启postgrelSQL
<property name="hibernate.c3p0.max_statements" value="50"/> ``` 这些配置分别设置了最小连接数、最大连接数、超时时间和最大预编译SQL语句数量。 总之,C3P0连接池是Java开发者在处理数据库连接时的一个有力...
解决Eclipse中使用drool时报Caused by: java.lang.RuntimeException: The Eclipse JDT Core jar is not in the classpath的问题。 详细错误: org.drools.RuntimeDroolsException: Unable to load dialect 'org....
23. **local_infile=0** - 禁止从本地文件加载数据。 #### 二、连接设置(Connection Settings) 1. **interactive_timeout=600** - 交互式连接的超时时间。 2. **wait_timeout=600** - 非交互式连接的超时...
c3p0.max_statements=0 c3p0.max_size=15 c3p0.min_size=5 c3p0.timeout=300 ``` 上述配置可以有效管理数据库连接资源,减少连接创建和销毁的开销,从而提升整体性能。 #### 五、总结 综上所述,通过合理的...
<property name="c3p0.max_statements">5 <property name="c3p0.min_size">100 <property name="c3p0.timeout">120 <property name="c3p0.unreturned_connection_timeout">2 <property name="c3p0.validate">...
<property name="hibernate.c3p0.max_statements">50 <property name="hibernate.c3p0.validate">true ``` 上述配置中,`hibernate.connection.provider_class`指定了使用C3P0作为连接池,其他各项参数则用于...
<property name="hibernate.c3p0.max_statements">50 <property name="hibernate.c3p0.idle_test_period">3000 ``` 这些配置参数分别代表最小连接数、最大连接数、超时时间、最大语句缓存数和空闲连接测试周期。 3....
4. `<property name="hibernate.c3p0.max_statements">100</property>`:预编译SQL语句的最大数量,适当设置可以提高执行效率。 5. `<property name="hibernate.c3p0.idle_test_period">120</property>`:检测空闲...