<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="D:\abc\webroot" path="/abc" reloadable="false">
<Resource
name="jdbc/abc"
type="javax.sql.DataSource"
password="ebss88"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="5"
maxWait="100"
username="root"
url="jdbc:mysql://localhost:3306/abc?characterEncoding=UTF-8"
maxActive="5"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"/>
</Context>
其中name指定数据源在容器中的JNDI名
driverClassName指定连接数据库的驱动
url指定数据库服务的URL
username指定连接数据库的用户名
password指定连接数据库的密码
maxActive指定数据源最大活动连接数
maxIdle指定数据池中最大的空闲连接数
maxWait指定数据池中最大等待获取连接的客户端
上面的JNDI的用途就是为了Tomcat容器中的数据源起一个名字:jdbc/dstest,从而让其程序可以通过该名字来访问该数据源对象。
下为测试访问数据源的JSP页面代码:
//初始化Context,使用InitialContext初始化Context
Context ctx=new InitialContext();
/*
通过JNDI查找数据源,该JNDI为java:comp/env/jdbc/dstest,分成两个部分
java:comp/env是Tomcat固定的,Tomcat提供的JNDI绑定都必须加该前缀
jdbc/dstest是定义数据源时的数据源名
*/
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/dstest");
//获取数据库连接
Connection conn=ds.getConnection();
//获取Statement
Statement stmt=conn.createStatement();
//执行查询,返回ResulteSet对象
ResultSet rs=stmt.executeQuery("select * from news_inf");
while(rs.next())
{
out.println(rs.getString(1)
+ "\t" + rs.getString(2) + "<br/>");
}