`

spring mvc+hibernate 配置c3p0数据源一些问题

阅读更多

在配置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元素值之间出现空格(人为添加)

  1. <propertyname="driverClass">
  2. <value>com.mysql.jdbc.Driver</value>
  3. </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

    在本项目"SSH - SpringMVC4 + Spring4 + Hibernate4 + c3p0 + Mysql.zip"中,开发者使用了SpringMVC4作为表现层,Spring4作为控制层和服务层,Hibernate4作为持久层,c3p0作为数据库连接池,以及MySQL作为数据库。...

    spring mvc+hibernate+spring完整配置步骤

    在配置Spring MVC时,我们需要引入相应的库,包括Spring、Spring MVC、Hibernate、数据库驱动、日志库(如log4j)、数据源(如c3p0)等。然后,我们需要在web.xml中配置DispatcherServlet,定义HandlerMapping和...

    spring4+hibernate+springmvc+c3p0

    4. **C3P0**:是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了一套完善的数据库连接池管理机制,用于提高数据库连接的复用性和效率。 在描述中提到的"开发常用工具类"可能包括各种辅助类,如日期时间...

    SSH整合学习笔记之struts2+spring+hibernate+c3p0源码

    SSH整合是Java Web开发中的一个经典组合,由Struts2、Spring和Hibernate三大框架组成,再加上C3P0作为数据库连接池,形成了高效且灵活的应用架构。本学习笔记将深入探讨这四个组件如何协同工作,构建出强大的企业级...

    基于注解的Spring MVC+Hibernate简单入门

    -- 配置数据源 --&gt; &lt;bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"&gt; &lt;!-- 配置SessionFactory --&gt; &lt;bean id="sessionFactory" class="org.springframework.orm.hibernate3...

    spring4mvc+hibernate4的lib包整合!

    为Spring提供数据源,可以使用Apache DBCP、C3P0或Tomcat JDBC Pool等连接池实现。 5. **创建DAO和Service层** 使用Hibernate的Session接口来实现数据访问对象(DAO),并在服务层(Service)中调用DAO,处理业务...

    SSH - Struts2 + Spring4 + Hibernate4 + c3p0 + Mysql.rar

    c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供数据库连接的自动创建、释放等功能,提高了数据库连接的使用效率。在SSH项目中,c3p0被用来管理和优化数据库连接,确保在高并发环境下仍能高效地处理...

    Spring +struts+c3p0 框架demo

    对于C3P0,需要设置数据源的bean,指定数据库连接的配置信息。 3. 在Struts的配置文件中,定义Action类与URL的映射,以及拦截器的配置。 4. 创建Action类,实现业务逻辑,并注入Spring管理的bean,如数据访问对象...

    sturts2+spring2.5+hibernate3.5+c3p0+log4j整合示例项目

    在这个项目中,c3p0被集成到Spring配置中,为Hibernate提供连接池服务,确保多个并发请求时能高效地获取和释放数据库连接。 ### Log4j日志系统 Log4j是Apache的一个开源项目,用于记录程序运行时的日志信息。它...

    ssh框架整合详细步骤(spring+struts2+hibernate)

    - 在Spring的配置文件中,配置Hibernate的SessionFactory,以及DAO层Bean的事务管理和数据源。 #### 三、整合后的优势 SSH框架的整合不仅提高了系统的可维护性和扩展性,还极大地简化了开发流程。Spring负责业务...

    struts2.3.24+spring4.2+hibernate5.0整合jar

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了管理数据库连接的功能。在SSH整合中,C3P0可以高效地管理数据库连接,避免资源浪费,提高系统性能。 Oracle驱动是连接Oracle数据库的关键组件,它...

    ssh框架整合jar包(struts2+spring4+hibernate4)

    - 整合:在SSH框架中,C3P0作为数据源,为Hibernate提供连接,通过配置文件设定连接池参数。 整合SSH框架涉及的关键步骤: - 引入所有必要的jar包,包括Struts2、Spring4、Hibernate4和C3P0的依赖。 - 配置Struts2...

    spring4.0.2+hibernate4.5.1+struts2.3.16.1+c3p0最新集成

    6. **整合c3p0**:在Spring配置文件中引入c3p0的数据源,并在Hibernate配置文件中指定使用该数据源。 7. **编写视图**:使用JSP或FreeMarker等技术创建视图,根据Struts2的结果转发规则进行页面跳转。 8. **测试...

    Struts2.3.6+hibernate4.3.5+Spring 4.0.5+oracle 10g的集成

    此外,还需要配置数据源、事务管理器以及Spring与Struts2的整合。 9. **数据库操作**:通过Hibernate的DAO(Data Access Object)接口,可以实现对数据库的基本操作,如UserDao接口中的save、update、delete方法。 ...

    Spring+SpringMVC +Hibernate 整合

    5. 数据源配置:在Spring配置文件中,配置DataSource,可以使用DBCP、C3P0等连接池,或者使用JNDI查找数据源。 6. 事务管理:Spring 提供了声明式事务管理,可以在配置文件中声明事务边界,由Spring自动管理事务的...

    struts22.3.4.1+hibernate4.1.6+spring3.1.2整合jar包

    4. 集成Hibernate:配置Hibernate的实体类、映射文件,以及Spring的数据源和SessionFactory。 5. 测试:编写测试用例,验证SSH集成是否正常工作。 在实际开发中,SSH的整合可以提高开发效率,减少代码重复,使得...

    spring3+hibernate4+springmvc+druid连接池

    Druid作为一款高性能、功能丰富的数据库连接池,相比其他如C3P0、DBCP等,具有更好的监控和扩展性,但相关的整合教程或示例可能相对较少,因此这个项目为开发者提供了一个实践和学习的平台。 【知识点】: 1. **...

    spring3.2+hibernate4

    3. **配置数据源**:在Spring的配置文件中,我们需要定义DataSource Bean,将C3P0连接池作为数据源。 4. **配置事务管理器**:配置PlatformTransactionManager Bean,通常使用HibernateTransactionManager,关联...

    SpringMVC+Spring+Hibernate(SSH)框架搭建之一

    3. 数据源配置:配置数据库连接池,如C3P0或HikariCP,以及JDBC数据源。 4. 事务管理:启用Spring的声明式事务管理,通过@Transactional注解控制事务边界。 5. AOP配置:如果需要,可以配置AOP规则,如定义切面、...

    Struts2+Spring3+Hibernate4整合的jar包

    3. 配置Hibernate:创建Hibernate的配置文件(hibernate.cfg.xml),定义实体类和数据源,以及SessionFactory的创建。 4. 数据库连接:配置数据库连接参数,包括URL、用户名、密码和驱动类名。 5. 实现业务逻辑:在...

Global site tag (gtag.js) - Google Analytics