在配置c3p0数据源的时候,看到这个异常:A ResourcePool could not acquire a resource from its primary factory or source
配置方案如下
<!--配置cp30数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass"> <value>com.mysql.jdbc.Driver</value> </property> <property name="jdbcUrl"> <value>jdbc:mysql://localhost:3306/message?useUnicode=true&characterEncoding=utf-8</value> </property> <property name="user"> <value>jzd</value> </property> <property name="password"> <value>jzd</value> </property> <!--连接池中保留的最小连接数。--> <property name="minPoolSize"> <value>5</value> </property> <!--连接池中保留的最大连接数。Default: 15 --> <property name="maxPoolSize"> <value>30</value> </property> <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 --> <property name="initialPoolSize"> <value>10</value> </property> <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 --> <property name="maxIdleTime"> <value>60</value> </property> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --> <property name="acquireIncrement"> <value>5</value> </property> <!-- JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements 属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。 如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 --> <property name="maxStatements"> <value>0</value> </property> <!--每60秒检查所有连接池中的空闲连接。Default: 0 --> <property name="idleConnectionTestPeriod"> <value>60</value> </property> <!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 --> <property name="acquireRetryAttempts"> <value>30</value> </property> <!-- 获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效 保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试 获取连接失败后该数据源将申明已断开并永久关闭。Default: false --> <property name="breakAfterAcquireFailure"> <value>false</value> </property> <!-- 因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的 时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable 等方法来提升连接测试的性能。Default: false --> <property name="testConnectionOnCheckout"> <value>false</value> </property> </bean>
配置数据都无问题的情况下,发现以下情况会产生错误:
情况1:value元素值之间出现空格(人为添加)
- <propertyname="driverClass">
- <value>com.mysql.jdbc.Driver</value>
- </property>
<property name="driverClass">
<value>com.mysql.jdbc.Driver </value>
</property>
情况2:value结束标签换行(当value值比较长时,Ctrl+Shift+F的时就会换行)
<propertyname="driverClass">
<value>com.mysql.jdbc.Driver
</value>
</property>
<property name="driverClass">
<value>com.mysql.jdbc.Driver
</value>
</property>
今天产生错误属于情况2
所以建议配置方式改成下面这样
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 指定连接数据库的JDBC驱动 --> <property name="driverClass" value="com.mysql.jdbc.Driver"> </property> <!-- 连接数据库所用的URL --> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?autoReconnect=true"> </property> <!-- 连接数据库的用户名 --> <property name="user" value="sa"> </property> <!-- 连接数据库的密码 --> <property name="password" value=""> </property> <!-- 设置数据库连接池的最大连接数 --> <property name="maxPoolSize" value="20"> </property> <!-- 设置数据库连接池的最小连接数 --> <property name="minPoolSize" value="2"> </property> <!-- 设置数据库连接池的初始化连接数 --> <property name="initialPoolSize" value="2"> </property> <!-- 设置数据库连接池的连接的最大空闲时间,单位为秒 --> <property name="maxIdleTime" value="20"> </property> </bean>
相关推荐
在本项目"SSH - SpringMVC4 + Spring4 + Hibernate4 + c3p0 + Mysql.zip"中,开发者使用了SpringMVC4作为表现层,Spring4作为控制层和服务层,Hibernate4作为持久层,c3p0作为数据库连接池,以及MySQL作为数据库。...
在配置Spring MVC时,我们需要引入相应的库,包括Spring、Spring MVC、Hibernate、数据库驱动、日志库(如log4j)、数据源(如c3p0)等。然后,我们需要在web.xml中配置DispatcherServlet,定义HandlerMapping和...
4. **C3P0**:是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了一套完善的数据库连接池管理机制,用于提高数据库连接的复用性和效率。 在描述中提到的"开发常用工具类"可能包括各种辅助类,如日期时间...
SSH整合是Java Web开发中的一个经典组合,由Struts2、Spring和Hibernate三大框架组成,再加上C3P0作为数据库连接池,形成了高效且灵活的应用架构。本学习笔记将深入探讨这四个组件如何协同工作,构建出强大的企业级...
-- 配置数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 配置SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3...
为Spring提供数据源,可以使用Apache DBCP、C3P0或Tomcat JDBC Pool等连接池实现。 5. **创建DAO和Service层** 使用Hibernate的Session接口来实现数据访问对象(DAO),并在服务层(Service)中调用DAO,处理业务...
c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供数据库连接的自动创建、释放等功能,提高了数据库连接的使用效率。在SSH项目中,c3p0被用来管理和优化数据库连接,确保在高并发环境下仍能高效地处理...
对于C3P0,需要设置数据源的bean,指定数据库连接的配置信息。 3. 在Struts的配置文件中,定义Action类与URL的映射,以及拦截器的配置。 4. 创建Action类,实现业务逻辑,并注入Spring管理的bean,如数据访问对象...
在这个项目中,c3p0被集成到Spring配置中,为Hibernate提供连接池服务,确保多个并发请求时能高效地获取和释放数据库连接。 ### Log4j日志系统 Log4j是Apache的一个开源项目,用于记录程序运行时的日志信息。它...
- 在Spring的配置文件中,配置Hibernate的SessionFactory,以及DAO层Bean的事务管理和数据源。 #### 三、整合后的优势 SSH框架的整合不仅提高了系统的可维护性和扩展性,还极大地简化了开发流程。Spring负责业务...
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了管理数据库连接的功能。在SSH整合中,C3P0可以高效地管理数据库连接,避免资源浪费,提高系统性能。 Oracle驱动是连接Oracle数据库的关键组件,它...
- 整合:在SSH框架中,C3P0作为数据源,为Hibernate提供连接,通过配置文件设定连接池参数。 整合SSH框架涉及的关键步骤: - 引入所有必要的jar包,包括Struts2、Spring4、Hibernate4和C3P0的依赖。 - 配置Struts2...
6. **整合c3p0**:在Spring配置文件中引入c3p0的数据源,并在Hibernate配置文件中指定使用该数据源。 7. **编写视图**:使用JSP或FreeMarker等技术创建视图,根据Struts2的结果转发规则进行页面跳转。 8. **测试...
此外,还需要配置数据源、事务管理器以及Spring与Struts2的整合。 9. **数据库操作**:通过Hibernate的DAO(Data Access Object)接口,可以实现对数据库的基本操作,如UserDao接口中的save、update、delete方法。 ...
5. 数据源配置:在Spring配置文件中,配置DataSource,可以使用DBCP、C3P0等连接池,或者使用JNDI查找数据源。 6. 事务管理:Spring 提供了声明式事务管理,可以在配置文件中声明事务边界,由Spring自动管理事务的...
4. 集成Hibernate:配置Hibernate的实体类、映射文件,以及Spring的数据源和SessionFactory。 5. 测试:编写测试用例,验证SSH集成是否正常工作。 在实际开发中,SSH的整合可以提高开发效率,减少代码重复,使得...
Druid作为一款高性能、功能丰富的数据库连接池,相比其他如C3P0、DBCP等,具有更好的监控和扩展性,但相关的整合教程或示例可能相对较少,因此这个项目为开发者提供了一个实践和学习的平台。 【知识点】: 1. **...
3. **配置数据源**:在Spring的配置文件中,我们需要定义DataSource Bean,将C3P0连接池作为数据源。 4. **配置事务管理器**:配置PlatformTransactionManager Bean,通常使用HibernateTransactionManager,关联...
3. 数据源配置:配置数据库连接池,如C3P0或HikariCP,以及JDBC数据源。 4. 事务管理:启用Spring的声明式事务管理,通过@Transactional注解控制事务边界。 5. AOP配置:如果需要,可以配置AOP规则,如定义切面、...
3. 配置Hibernate:创建Hibernate的配置文件(hibernate.cfg.xml),定义实体类和数据源,以及SessionFactory的创建。 4. 数据库连接:配置数据库连接参数,包括URL、用户名、密码和驱动类名。 5. 实现业务逻辑:在...