Tomcat数据源,Jsp/Java使用JDNI服务来实现数据库连接

来源:互联网 发布:数据黑匣子 编辑:程序博客网 时间:2024/05/23 23:36

ps.记得将数据库的驱动程序复制到 lib 文件夹中

1.配置server.xml

--此示例的所有注释,只是为了解释作用,实际操作中切勿添加<Context path="/user" docBase="C:/userdemo" reloadable="true">    <Resource         name="jdbc/user"        --配置一个连接池资源,名称为jdbc/user        auth="Container"        --容器负责资源的连接        type="javax.sql.DataSource"        --此数据源名称对应的类型是DataSource        maxActive="100"         --可以打开的最大连接数        maxIdle="30"            --维持的最小连接数        maxWait="10000"         --用户等待的最大时间        username="root"         --数据库用户名        password="root"         --数据库密码        driverClassName="com.mysql.jdbc.Driver"        --数据库驱动程序        url="jdbc:mysql://localhost:3306/user"          --数据库名称    /></Context>

注意,Resource节点的auth选项表示连接数据库的方法,一般有两种形式:

1、Container,容器将代表应用程序登录到资源管理器,一般使用这种形式;
2、Application,应用程序必须程序化地登录到资源管理器;


2.配置web.xml

<resource-ref>    <description>DB Connection</description>    <res-ref-name>jdbc/user</res-ref-name>    <ref-type>javax.sql.DataSource</ref-type>    <res-auth>Container</res-auth></resource-ref>


3.通过数据源取得连接(jsp)

<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%><%@page import="javax.naming.*"%><%@page import="javax.sql.*"%><%@page import="java.sql.*"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body><%    Connection conn = null;try{    //初始化名称查找上下文    Context ctx = new InitialContext();    //取得DataSource实例,()中为JNDI名称    DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/login");    //取得数据库连接    conn = ds.getConnection();} catch(Exception e) {    e.printStackTrace();} %>    <!-- 若不为空,则已连接 -->    <%=conn %><%try{    //将数据库连接放回池中    conn.close();} catch(Exception e) {    e.printStackTrace();}%></body></html>

注意,java:comp/env环境属性,
在javaEE规定的一个环境命名上下文,主要为了解决JNDI查找时的冲突
在tomcat中必须设置(其余的服务器不一定需要使用)


4.通过数据源取得连接(java)

在DAO开发中,常用此类,来替代用java来连接数据库

import java.sql.Connection;import javax.naming.*;import javax.sql.DataSource;public class DatabaseConnection {    //定义JNDI的查找名称    private static final String DSNAME="java:comp/env/jdbc/user";    private Connection conn = null;    public DatabaseConnection() throws Exception {      //在构造方法中进行数据库连接        try {            //初始化名称查找上下文            Context ctx = new InitialContext();            //取得DataSource的实例            DataSource ds = (DataSource) ctx.lookup(DSNAME);            //取得数据库连接            this.conn = ds.getConnection();        } catch (Exception e) {            e.printStackTrace();        }    }    public Connection getConnection() {      //取得数据库连接        return this.conn;    }    public void close() throws Exception {      //数据库关闭操作        if(this.conn != null) {            try {                this.conn.close();            } catch(Exception e) {                throw e;            }        }    }}
阅读全文
0 0
原创粉丝点击