码迷,mamicode.com
首页 > 其他好文 > 详细

数据源和连接池

时间:2017-06-18 13:12:00      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:实现   数据   抽象   nbsp   管理   return   tin   void   方案   

tomcat配置数据源步骤:

1、配置Tomcat的conf/context.xml         ----------->         直接粘贴到<context></context>中

  <Resource name="jdbc/news" 数据源的逻辑名称,可以随便取,但是会用到
    auth="Container" 认证、容器管理的、不用管
    type="javax.sql.DataSource" 容器类型
    maxActive="100" 连接池里最大的连接数量
    maxIdle="30" 最大同时能有30个空闲链接
    maxWait="10000" 最大的等待时间。等待连接
    username="root"
    password="kgc"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://127.0.0.1:3306/kgcnews"

/>

2、使用JNDI获取连接对象

 

/***
     * 用过数据源连接数据库
     */
    public static void getConn(){
        try {
            //初始化上下文
            Context context = new InitialContext();
            //获取在context.xml中已配好的数据源java:comp/env/ + 数据源逻辑名
            DataSource ds = (DataSource) context.lookup("java:comp/env/bigwork");
            //根据数据源获得连接对象
            conn = ds.getConnection();
        } catch(Exception e) {
            e.printStackTrace();
        }
    } 

 

 

3.错误

(1)找不到数据源

解决办法:

在eclipse中的server中直接配置,可能在tomcat电脑路径中配置了但是没有配上

<Resource  配到server.xml中,又在context.xml中添加<ResourceLink。。。name=" 数据源逻辑名">

 

(2)java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z

解决方案:
    mysql-connector 版本为 5.0.4 ,那么对应的 dbcp 和 pool 版本应该为 1.4 和 1.6 。
    5.0.4 不应该使用 2.0 及以上版本的 dbcp 和 pool。因为 在 dbcp 中 org.apache.commons.dbcp2.DelegatingConnection 有如下代码:
try {
    return _conn.isValid(timeout);
 }
 catch (SQLException e) {
    handleException(e);
    return false;
 }

    上述代码中 isVaild 在 com.mysql.jdbc.Connection (5.0.4 ) 中并未实现上述方法,因此将会抛出抽象方法错误。
    如果需要使用 dbcp 2.0 ,那么 mysql-connector 必须使用 5.1.3 版本。

 

数据源和连接池

标签:实现   数据   抽象   nbsp   管理   return   tin   void   方案   

原文地址:http://www.cnblogs.com/sangong/p/7043924.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!