现在的位置: 首页 > 综合 > 正文

JNDI 数据库连接池

2015年07月25日 ⁄ 综合 ⁄ 共 4315字 ⁄ 字号 评论关闭

使用JNDI 来连接数据库,可以不用c3p0这些

第一步   首先进入tomcat 在自己的tomcat里面找到  service.xml ,编辑它

<Context path="/aaa" docBase='D:/ONE/Demo/WebRoot'/>         这段代码添加在</Host>之前

保存,然后使用浏览器输入 localhost:8080/aaa   tomcat就可以自动的去访问Demo     如果页面报错你要添加 jstl-1.2.jar  因为你的这个Demo项目里面有jstl标签, tomcat访问的时候会去访问你的这个Demo,所以你需要这个包   这是第一步,判断是否能成功,

第二步   <Context path="/aaa" docBase='D:/ONE/Demo/WebRoot'>  

 <Resource name="jdbc/mysql " auth="Container"
                        type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
                        url="jdbc:mysql:///db909?characterEncoding=UTF8"
                        username="root" password="1234" maxActive="10" maxIdle="30"
                        maxWait="-1"/>

</Context>

name="jdbc/mysql "   这个表示资源的名称

auth="Container"     表示容器持有

driverClassName    加载驱动

  url="jdbc:mysql:///db909?characterEncoding=UTF8"  连接的数据库

 username="root"

password=""

maxActive="10"  最大数据连接池数量

maxIdle="30"  最大空闲时间

maxWait="-1"   表示连不上就崩溃

第三步   以上连好后  就将   连接数据库的包 放进 lib里面

第四步

import java.io.IOException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TwoServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try{
            //  声明Context上下午查找对象
            Context ctx = new InitialContext();
            //查找运行环境
            Context ctx1 = (Context) ctx.lookup("java:comp/env");
            //从环境中找JDNI
            Object obj = ctx1.lookup("jdbc/mysql");
            System.out.println(obj);

            //测试连接是否成功
            DataSource ds = (DataSource) obj;
            Connection con = ds.getConnection();
            System.out.println(con);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

以上是第一种连接的方法,如果想要简单点

可以将以上代码直接简化
          Context ctx = new InitialContext();
            //从环境中找JDNI
            Object obj = ctx1.lookup("java:comp/env/jdbc/mysql");
            System.out.println(obj);            //测试连接是否成功
            DataSource ds = (DataSource) obj;
            Connection con = ds.getConnection();
            System.out.println(con);

           Statement st = con.createStatement();
            ResultSet rs= st.executeQuery("select * from users");
            while(rs.next()){
                System.out.println(rs.getString(1));
            }

完成

如果想不动service.xml可以这样

进入conf\catalina\localhost文件夹里面创建一个xy.xml文件,将

                 <Context  docBase="D:/programfiles/MyEclipse10/wk3/day25/WebRoot">

                                   <Resourcename="jdbc/mysql[W1] " auth="Containe[W2] r"

                                          type="javax.sql.DataSource"driverClassName="com.mysql.jdbc.Driver"

                                          url="jdbc:mysql:///db909?characterEncoding=UTF8"

                                          username="root"password="1234" maxActive="10" maxIdle="30"

                                          maxWait="-1"/>

                     </Context>

将这句放进去

一个文件名就是一个项目

创建DatasourceUtils

package it;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DatasourceUtils {
        private static DataSource ds;
        static {
            try{
                Context ctx = new InitialContext();
                ds = (DataSource) ctx.lookup(("java:comp/env/jdbc/mysql"));
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        public static DataSource getDs(){
            return ds;
        }
}

然后就是修改TwoServlet
import it.DatasourceUtils;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
public class TwoServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try{
            DataSource ds = DatasourceUtils.getDs();
            Connection con = ds.getConnection();
            System.out.println(con);
            Statement st = con.createStatement();
            ResultSet rs= st.executeQuery("select * from users");
            while(rs.next()){
                System.out.println(rs.getString(1));
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

搞定成功   输入地址方式  localhost:8080/xy/项目名字


抱歉!评论已关闭.