这几天北京下着雨,虽然天气凉爽了,空气清新了,但我的项目生病了。。。。。。
项目采用Struts2+Spring2+ibatis2技术,已经上线一周时间,遇到致命的内伤,让我心悸让我忧。。。。。。
1.项目中使用C3P0作为数据库连接池,并利用Spring管理,其配置如下:
<!-- c3p0连接池配置 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 用户名-->
<property name="user" value="${username}"/>
<!-- 用户密码-->
<property name="password" value="${password}"/>
<property name="driverClass" value="${driver_class}"/>
<property name="jdbcUrl" value="${url}"/>
<!-- 当连接池耗尽时候,一次获得连接数-->
<property name="acquireIncrement" value="2"/>
<!-- 连接池最大数 -->
<property name="maxPoolSize" value="20"/>
<!-- 连接池最小数-->
<property name="minPoolSize" value="2"/>
<!-- 初始化连接池大小 -->
<property name="initialPoolSize" value="2"/>
<!-- 当连接池连接耗尽时,客户端获取连接等待所需时间-->
<property name="checkoutTimeout" value="3000"/>
<!-- 当连接失效时,或得连接的次数,0为无限次(重连)-->
<property name="acquireRetryAttempts" value="0"/>
</bean>
2.项目采用Spring声明式事务管理,是使用BeanNameAutoProxyCreator自动生成事务代理的方式。配置如下:
<!-- 配置事务拦截器 -->
<!-- 配置事务拦截器Bean -->
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.
TransactionInterceptor">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributes">
<!-- 下面定义事务传播属性 -->
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!-- 定义BeanNameAutoProxyCreator的Bean后处理器 -->
<bean class="org.springframework.aop.framework.autoproxy.
BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>transactionDAO</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
其中transactionDAO一个公共的DAO,封装了增加、删除、修改等操作,所以我只对该DAO做事务代理。
运行情况是:
刚开始的时候都非常好用,各个部件都运行正常,运行一两天就抛出如下异常:
1.
com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a
resource from com.mchange.v2.resourcepool.BasicResourcePool@143073a -- timeout at
awaitAvailable()
2.
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection;
nested exception is java.sql.SQLException: An attempt by a client to checkout a Connection
has timed out.
曾今有一个项目,一次性向数据库插入1W条数据,也采用了C3P0,未曾有数据库连接超时的问题。
各位道友,你们是否也遇到这样的问题,又是如何解决的呢?
分享到:
相关推荐
c3p0是款强大的数据库连接池 其完整包要到官网下载 第一次使用学习的同学一定很是头大!因为不知道怎么写xml环境配置文件 所以本人稍微做了整理 里面有样板的xml配置文件 注意:1 配置文件名不能乱改(否则c3p0会找不到...
c3p0 重新自动连接c3p0 重新自动连接c3p0 重新自动连接c3p0 重新自动连接
C3p0c3p0-0.9.5.5三个jar包使用,匹配mysql8.0等信息,包含mchange-commons-java-0.2.19.jar、c3p0-oracle-thin-extras-0.9.5.5.jar、c3p0-0.9.5.5.jar
赠送jar包:c3p0-0.9.5.2.jar; 赠送原API文档:c3p0-0.9.5.2-javadoc.jar; 赠送源代码:c3p0-0.9.5.2-sources.jar; 赠送Maven依赖信息文件:c3p0-0.9.5.2.pom; 包含翻译后的API文档:c3p0-0.9.5.2-javadoc-API...
C3P0数据库连接池和jar包,因为jdbc没有保持连接的能力,一旦超过一定时间没有使用...若使用C3P0连接池来池化连接,随时取用,则平均每次取用只需要10-20毫秒。这在高并发随机访问数据库的时候对效率的提升有很大帮助。
java中c3p0数据库连接池使用方法(c3p0-config.xml+c3p0-0.9.2-pre1.jar+JdbcPool_c3p0.java),里面包含了c3p0-0.9.2-pre1.jar、以及配置文件:c3p0-config.xml、以及一个c3p0数据库连接池工具类(只有简单的两个方法...
C3P0源码及实例:C3P0资源文件配置、XML文件配置 C3P0源码及实例:C3P0资源文件配置、XML文件配置
c3p0连接池,java jdbc操作
c3p0配置文件
c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包c3p0 jar包
c3p0配置文件
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。C3P0数据源在项目开发中使用得比较多。导入相关jar包c3p0-0.9.2-pre1.jar、...
c3p0-0.9.2.1.jar&&hibernate-c3p0-4.0.0.Final[1].jar&&mchange-commons-java-0.2.3.4.jar
c3p0-0.9.5.1 jar包
C3P0相关的JAR包,数据库连接池所依赖的三个JAR包
C3P0 是最常用的连接池技术!Spring框架,默认支持C3P0连接池技术!
c3p0和dbutils的jar包c3p0和dbutils的jar包c3p0和dbutils的jar包c3p0和dbutils的jar包c3p0和dbutils的jar包c3p0和dbutils的jar包c3p0和dbutils的jar包c3p0和dbutils的jar包c3p0和dbutils的jar包c3p0和dbutils的jar包...
c3p0连接池jar包
C3P0连接池配置详解C3P0连接池配置详解C3P0连接池配置详解C3P0连接池配置详解
内容概要:c3p0连接池需要jar包.rar以及相关配置文件 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate、Spring等。 适合人群:正在学习...