tomcat 数据源

一.在tomcat的conf/server.xml的GlobalNamingResources节点加入:

<!--

name:数据源名称,通常取"jdbc/xxx"的格式 

type:数据源类DataSource

maxIdle:最大空闲数,数据库连接的最大空闲数,超过空闲时间,数据库连接被标记为不可用,然后被释放,设为0表示无限制

maxWait:最大建立连接等待时间,如果超过此时间将接到异常,设为-1表示无限制

maxActive:连接池的最大数据库连接数,设为0表示无限制

-->

<Resource 

name="jdbc/DBPool" 

auth="Container"     

description="DB Connection"     

type="javax.sql.DataSource"     

username="****" 

password=" ****"

driverClassName="com.mysql.jdbc.Driver"   

maxIdle="2"

maxWait="5000"

url="jdbc:mysql://*. * . * . * :3306/dayaInfo" 

maxActive="5" />

 </GlobalNamingResources>

二.在tomcat的conf/context.xml配置数据源连接,在<Context>节点中加入:

<ResourceLink

name="jdbc/DBPool"

type="javax.sql.DataSource"

global="jdbc/DBPool"/>

三.在web.xml中配置

    <resource-ref>

        <description>mysql db connection pool</description>

        <res-ref-name>jdbc/DBPool</res-ref-name>

        <res-type>javax.sql.DataSource</res-type>

        <res-auth>Container</res-auth>

        <res-sharing-scope>Shareable</res-sharing-scope>

    </resource-ref>

四.后台代码测试

package com.dayainfo.achieve;

import com.dayainfo.base.BaseServlet;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

@WebServlet(urlPatterns = "/testDataSource", asyncSupported = true)
public class BookAuthorCount extends BaseServlet {
    private DataSource pool = null;

    @Override
    protected void excuteQuery() throws ServletException, IOException {
        BookAuthorCount bookAuthorCount = new BookAuthorCount();
        ResultSet rs = null;
        try {
            rs = bookAuthorCount.query("select * from authorInfo limit 0,10");
            while (rs.next()) {
                 String author=rs.getString("作者");
                 String refTotal=rs.getString("被引用本数");
                 String totalRefTimes=rs.getString("总共被引用次数");
                System.out.print("作者:"+author+"\t");
                System.out.print("被引用本数:"+refTotal+"\t");
                System.out.println("总共被引用次数:"+totalRefTimes);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


    public DataSource getDataSource() {
        Context env = null;
        try {
            env = (Context) new InitialContext().lookup("java:comp/env");   //java:comp/env指jvm虚拟机
            pool = (DataSource) env.lookup("jdbc/DBPool");                     //jdbc/DBPool是数据源名称
        } catch (NamingException e) {
            e.printStackTrace();
        }
        return pool;
    }

    public ResultSet query(String sql) throws SQLException {
        Connection conn = null;
        try {
            conn = getDataSource().getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        Statement statement = null;
        try {
            statement = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        ResultSet rs = null;
        try {
            rs = statement.executeQuery(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return rs;
    }
}
 

猜你喜欢

转载自qq510219366.iteye.com/blog/1704312