`
weitd
  • 浏览: 143335 次
  • 性别: Icon_minigender_1
  • 来自: 新都
社区版块
存档分类
最新评论

在spring配置jdbc-pool连接池

 
阅读更多
    看了一篇文章,讲jdbc-pool比c3p0、dbcp效率高,但没有找到它在spring中的配置方式,所以自己尝试了一下,成功了。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    <!--数据源配置-->       
    <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
        <property name="poolProperties">
            <bean class="org.apache.tomcat.jdbc.pool.PoolProperties">
                <property name="url" value="jdbc:sqlserver://172.168.16.11:1433;databaseName=xgerp"/>
                <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
                <property name="username" value="xgerp_r"/>
                <property name="password" value="xgerp"/>
                <property name="jmxEnabled" value="true"/>
                <property name="testWhileIdle" value="false"/>
                <property name="testOnBorrow" value="true"/>
                <property name="validationInterval" value="30000"/>
                <property name="testOnReturn" value="false"/>
                <property name="validationQuery" value="select 1"/>
                <property name="timeBetweenEvictionRunsMillis" value="30000"/>
                <property name="maxActive" value="100"/>
                <property name="initialSize" value="10"/>
                <property name="maxWait" value="10000"/>
                <property name="removeAbandonedTimeout" value="60"/>
                <property name="minEvictableIdleTimeMillis" value="30000"/>
                <property name="minIdle" value="10"/>
                <property name="logAbandoned" value="true"/>
                <property name="removeAbandoned" value="true"/>
                <property name="jdbcInterceptors" value="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"/>
            </bean>
        </property>
    </bean>

测试代码如下:
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.sql.DataSource;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

/**
 * 简单测试jdbc-pool在spring中的配置
 * @author Administrator
 */
public class JdbcPoolTest {
    @Test
    public void testPool() {
        ApplicationContext context = new FileSystemXmlApplicationContext("file:G:/vss/xuguang/web/WEB-INF/applicationContext.xml");
        DataSource ds = (DataSource)context.getBean("dataSource");
        Connection con = null; 
        try {
            con = ds.getConnection();
            Statement st  = con.createStatement();
            ResultSet rs = st.executeQuery("select top 10 personName from comm_person");
            while (rs.next()) {
                System.out.println("personName: " + rs.getString("personName"));
            }
            rs.close();
            st.close();
        } catch (SQLException ex) {
            Logger.getLogger(JdbcPoolTest.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (con != null) try {con.close();} catch (Exception ignore){}
        }
    }
}
分享到:
评论
8 楼 asd2523011 2014-11-06  
楼主可以把程序打包提供下载吗?我试了一下,一直是堆栈溢出的错误,我看到tomcat的论坛里好多都报堆栈溢出的错误,公司好多人说jdbc只有配置数据源和在java里写。
7 楼 zhou85xin 2014-05-06  
既然用的连接池 为什么还要调用close方法呢
6 楼 zw1502071 2013-11-26  
楼主您好,有没有websphere在spring配置数据源的方法?类似于这一篇文章的做法
5 楼 zw1502071 2013-11-26  
请问楼主是怎么想到在spring配置文件中这样配置呢?谢谢
4 楼 zw1502071 2013-11-26  
需要将tomcat7中lib下的tomcat-jdbc.jar拷贝到项目中即可,并且url要按照不同驱动的写法而不尽相同,我试过了可行
3 楼 zw1502071 2013-11-26  
renren4 写道
你好,以前我使用的C3po,感觉经常挂死。我刚刚安装你的配置,发现下面的错误:
严重: Exception sending context initialized event to listener instance of class com.yhzs.web.listener.TaskListener
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: com.mysql.jdbc.Driver
Caused by: java.sql.SQLException: com.mysql.jdbc.Driver
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:243)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:176)
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:662)
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:602)
at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:465)
at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:130)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:112)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:99)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:123)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:112)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:516)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:583)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:612)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:620)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:652)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:718)
at com.yhzs.web.dao.SensitiveWordInfoDAO.findSensitiveWordList(SensitiveWordInfoDAO.java:49)
at com.yhzs.web.service.SensitiveWordInfoSerivce.refreashSensitiveWordCahce(SensitiveWordInfoSerivce.java:81)
at com.yhzs.web.listener.TaskListener.initSensitiveWordCache(TaskListener.java:61)
at com.yhzs.web.listener.TaskListener.contextInitialized(TaskListener.java:45)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4765)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5260)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1525)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1515)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:236)
... 30 more
2012-7-11 22:47:24 org.apache.catalina.core.StandardContext startInternal

请问这个是为什么呢?


这个问题我也今天遇到了,报错和你一样。你看这句Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver ,这个类在tomcat-jdbc.jar中,
缺少tomcat7的lib下的tomcat-jdbc.jar,将这个jar拷贝到项目的lib下就解决了这个问题
2 楼 weitd 2012-07-12  
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
这个异常说你的环境下没有找到mysql的驱动,你查看一下的libs
1 楼 renren4 2012-07-11  
你好,以前我使用的C3po,感觉经常挂死。我刚刚安装你的配置,发现下面的错误:
严重: Exception sending context initialized event to listener instance of class com.yhzs.web.listener.TaskListener
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: com.mysql.jdbc.Driver
Caused by: java.sql.SQLException: com.mysql.jdbc.Driver
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:243)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:176)
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:662)
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:602)
at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:465)
at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:130)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:112)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:99)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:123)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:112)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:516)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:583)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:612)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:620)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:652)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:718)
at com.yhzs.web.dao.SensitiveWordInfoDAO.findSensitiveWordList(SensitiveWordInfoDAO.java:49)
at com.yhzs.web.service.SensitiveWordInfoSerivce.refreashSensitiveWordCahce(SensitiveWordInfoSerivce.java:81)
at com.yhzs.web.listener.TaskListener.initSensitiveWordCache(TaskListener.java:61)
at com.yhzs.web.listener.TaskListener.contextInitialized(TaskListener.java:45)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4765)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5260)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1525)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1515)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:236)
... 30 more
2012-7-11 22:47:24 org.apache.catalina.core.StandardContext startInternal

请问这个是为什么呢?

相关推荐

    JDBC数据源连接池的配置和使用示例

    **JDBC数据源连接池配置与使用详解** 在Java Web应用中,数据库连接的管理是至关重要的。为了提高性能和资源利用率,开发人员通常会使用数据源连接池。本篇文章将详细讲解JDBC数据源连接池的配置和使用,以帮助你更...

    Java Spring常用高性能连接池以及属性

    Java Spring常用高性能连接池以及属性 * C3P0比较耗费资源,效率方面可能要低一点。 * DBCP在实践中存在BUG,在某些种情会产生很多空连接不能释放,Hibernate3.0已经放弃了对其的支持。 * Proxool的负面评价较少,...

    java-jdbc-连接池大礼包

    3. 常用连接池框架:C3P0、DBCP、HikariCP、Apache DBCP2、Tomcat JDBC Pool等,各有优缺点,如HikariCP以其高速度和低内存占用而被广泛应用。 4. 配置连接池:设置初始化连接数、最大连接数、超时时间、空闲连接...

    SpringJDBC工程对应Jar包

    4. `commons-pool.jar`(可能):这是Apache Commons Pool库,通常作为DBCP连接池的依赖,用于对象池化,包括数据库连接。 5. `spring-tx.jar`:Spring事务管理模块,它支持声明式事务管理,可以配合Spring JDBC...

    参照阿里druid整理druid-spring-boot-starter的demo

    通过引入这个启动器,我们可以快速地在Spring Boot项目中配置并使用Druid数据库连接池。`druid-spring-boot-starter`自动配置了数据源、监控统计以及相关的初始化设置,使得开发者无需编写大量繁琐的XML配置或Java...

    tomcat-jdbc-7.0.42.jar

    这个连接池组件在Spring Boot框架中被广泛使用,以支持内嵌Tomcat服务器运行JDBC操作。本文将深入探讨`tomcat-jdbc-7.0.42.jar`这个库,包括其核心概念、配置、性能优化以及与Spring Boot的集成。 首先,Tomcat ...

    java spring jdbc 常用jar包集合.zip

    - `commons-pool.jar`:Apache Commons的连接池库,有时可能作为其他连接池(如DBCP)的依赖。 7. **JDBC API**: - `javax.sql.jar` 或 `jdbc-api.jar`:包含JDBC API接口和规范。 8. **Spring AOP和Core**: ...

    Spring下配置几种常用连接池

    在Spring框架中,数据库连接管理是非常关键的一部分,有效的连接池配置可以提高应用的性能和稳定性。本文将深入探讨如何在Spring环境下配置几种常用的数据库连接池,包括HikariCP、Druid和Apache DBCP2。 一、...

    Spring下配置几种常用连接池及配置详解

    在Spring Boot项目中,我们可以在配置文件中这样设置: ``` spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.druid.initial-size=5 spring.datasource.druid.min-idle=5 ...

    在Hibernate中配置Proxool连接池

    总的来说,在Hibernate中配置Proxool连接池涉及的主要步骤包括:在Spring配置文件中声明SessionFactory并指定Proxool的相关属性;在单独的Proxool配置文件中定义数据库连接参数;最后确保这些配置与实际的数据库连接...

    spring-连接池配置

    接下来,在Spring的配置文件`applicationContext.xml`中进行数据库连接池的相关配置。以下是一个典型的配置示例: ```xml &lt;bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method=...

    spring中 连接池的使用

    在Spring框架中,数据库连接池是管理数据库连接的关键组件,它能有效地提高应用程序的性能和资源利用率。在上述内容中,提到了两种常用的连接池实现:Apache的DBCP(BasicDataSource)和C3P0(ComboPooledDataSource...

    spring连接池配置

    ### Spring框架中C3P0连接池配置详解 ...总之,在Spring框架中配置C3P0连接池是一项重要而细致的工作。开发者需要根据具体的应用场景和业务需求合理设置各项参数,以充分发挥C3P0的优势,提高应用程序的整体性能。

    springboot连接池、动态配置多数据源连接池,特别适合大数据部门、数据中台服务的多数据源连接池.zip

    本项目——"spring-boot-easy-connection-pool-master",主要探讨了如何在Spring Boot环境下配置和管理连接池,并且实现了动态配置多数据源的功能,这对于大数据部门和数据中台服务尤其重要。 首先,让我们深入理解...

    commons-dbcp-1.2.2.jar和commons-pool-1.3.jar包

    首先,Apache Commons DBCP(数据库连接池)是Apache软件基金会的一个开源项目,它提供了一个实现了Java Database Connectivity (JDBC) API的数据源类。数据源是JDBC中一个重要的概念,它允许开发者在应用中管理...

    commons-pool&commons;-dbcp

    在SSH框架中,Spring通常负责集成数据库连接池,而Commons DBCP就是Spring推荐的连接池实现之一。通过配置Spring的DataSource,开发者可以利用DBCP来管理数据库连接,实现数据库操作的高效性和稳定性。此外,"sql ...

    tomcat连接池与阿里Druid连接池

    Tomcat 连接池配置需要在 Maven 项目中添加 Tomcat JDBC 依赖项,并在 application.properties 文件中配置数据库连接信息。下面是 Tomcat 连接池的配置示例: ```xml &lt;!-- Tomcat JDBC 依赖项 --&gt; &lt;groupId&gt;org....

    commons-pool-1.3和commons-dbcp-1.2.2.rar

    标题中的"commons-pool-1.3"和"commons-dbcp-1.2.2"是两个著名的Apache开源项目,它们在Java开发中扮演着重要角色,尤其在处理数据库连接池方面。这两个库通常用于三层架构(表现层、业务逻辑层、数据访问层)的应用...

    jdbc数据库连接池

    在Spring框架中,可以使用以下配置来启用HikariCP连接池: ```xml &lt;bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close"&gt; ...

Global site tag (gtag.js) - Google Analytics