1. 首先确保Tomcat安装目录中的\common\lib(对于Tomcat5.5)或者是\lib(Tomcat6.0)目录中已包含JDBC连接数据库所必须的三个.jar文件(msbase.jar , mssqlserver.jar 和msutil.jar,JDBC驱动器中包含这三个文件,只需将JDBC驱动器安装后的lib目录下的这三个文件复制到Tomcat安装目录的lib目录下即可)。
2. 修改Tomcat安装目录的conf子目录中的server.xml和context.xml文件。
对于server.xml文件,在<GlobalNamingResources>元素中添加如下的内容:
<Resource name="数据库名"
auth="Container"
type="javax.sql.DataSource"
username="sa"
password="123"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="10"
maxWait="10000"
maxActive="100"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test1"
/>
注:test1是一个建好的数据库.
各字段含义如下:
name:定义数据库连接的名称 driverClassName:指定JDBC驱动器的类
username:登陆数据库时使用的用户名 password:登陆数据库的密码
maxIdle:数据库连接的最大空闲时间 maxWait:表示最大建立连接等待时间
maxActive:连接池的最大数据库连接数 url:表示的是需要连接的数据库的地址和名称
对于context.xml文件,在<Context>元素中加如下内容:
<ResourceLink global="数据库名字" name="jdbc/TestDB" type="javax.sql.DataSource" />
两个数据库名称应该一一致
3.见一个.jsp文档来测试
内容如下,
我这里在C:\apache-tomcat-6.0.39\webapps\zhanglixuan这个应用下建立的
所以需要修改一下这个应用下的C:\apache-tomcat-6.0.39\webapps\zhanglixuan\WEB-INF\web.xml文档
在<web-app>标签之间添加
<resource-ref>
<description>sqlserverDB Connection</description>
<res-ref-name>jdbcTestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
然后将下面的jsp代码替换原来的index.jsp,并访问这个jsp即可
完成配置后,可用如下文件来测试连接池配置是否正确.
<%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="gb2312"%>
<%@ page import="java.sql.*,javax.naming.*" %>
<%
try{
Context initCtx=new InitialContext();
Context ctx=(Context)initCtx.lookup("java:comp/env");
//获取连接池对象
Object obj=(Object)ctx.lookup("jdbc/TestDB");
//类型转换
javax.sql.DataSource ds=(javax.sql.DataSource)obj;
//从连接池中获取数据库连接对象
Connection conn=ds.getConnection();
Statement stmt=conn.createStatement();
//获取服务器端时间,该SQL语句适用于SQLServer
String strSQL="select getDate()";
ResultSet rs=stmt.executeQuery(strSQL);
rs.next();
Date date=rs.getDate(1);
out.println(date.toString());
rs.close();
stmt.close();
conn.close();
}
catch(Exception e){
out.println(e);
}
%>
该实例测试程序通过数据库连接池的方式获取了MS SQLServer所在服务器的当前时间,运行结果如下,表明连接池配置成功.