配置Tomcat连接池主要使用的是<Resource>标签,下面对本实例中用到<Resource>标签中的属性进行详细讲解。
(1)name:数据库连接池名称。
(2)type:数据库连接池类型。
(3)driverClassName:使用的JDBC驱动的完整有效的java类名。
(4)url:传递给JDBC驱动的用于建立连接的URL。
(5)username:传递给JDBC驱动的用于建立连接的用户名。
(6)password:传递给JDBC驱动的用于建立连接的密码。
(7)initialSize:初始化连接数,连接池启动时创建的初始化连接数量,默认值为0。
(8)maxActive:最大活动连接数,连接池在同一时间能够分配的最大活动连接的数量,如果设置为非正数则表示不限制,默认值为8
(9)maxIdle:最大空闲连接数,连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制,默认值为8。
(10)minIdle:最小空闲连接数,连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接,如果设置为0则不创建,默认值为0。
(11)maxWait:无限最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常,如果设置为-1表示无限等待,默认值为0。
过程
(1)下载SQL Server驱动包并复制到tomcat安装目录的lib文件夹下。
(2)在当前项目的META-INF文件夹内新建context.xml文件,在此xml文件的<Context>标签中加入<Resource>标签,关键代码如下所示。
<Context antiJARLocking="true" path="/076">
<Resource name="jdbc/076"
type="javax.sql.DataSource"
username="sa"
password=""
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_database04"/>
initialSize="10"
maxActive="5"
maxIdle="20"
minIdle="5"
maxWait="-1"
/>
</Context>
(3)创建UserBean类封装数据记录,并且编写getConnection()方法从数据库连接池中获取数据库连接,编写findAll()方法查询数据表中的数据,并将查询结果集添加到List集合中。关键代码如下:
public Connection getConnection() {
Connection con = null; //声明Connection对象
try {
Context initctx = new InitialContext(); //创建Context对象
Context envContext = (Context) initctx.lookup("java:comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/076"); //按照JNDI名称查找
con = ds.getConnection(); //创建Connection对象
} catch (Exception ex) {
ex.printStackTrace();
}
return con;
}
public List findAll(){
List list = new ArrayList(); //声明list对象
try {
Connection con = getConnection(); //创建数据库连接
Statement st = con.createStatement(); //创建Statmenet对象
ResultSet rs = st.executeQuery("select top 2 * from tb_ClassList order by CID desc"); //执行SQL语句
while (rs.next()) {
UserBean bean = new UserBean(); //声明UserBean,并为UserBean的属性赋值
bean.setCid(Integer.valueOf(rs.getInt("CID")));
bean.setCname(rs.getString("CName"));
bean.setCstartDate(rs.getString("CStartDate"));
bean.setCtype(rs.getString("CType"));
list.add(bean); //添加到list列表
}
rs.close(); //关闭rs对象
st.close(); //关闭st对象
con.close(); //关闭con对象
} catch (SQLException ex) {
ex.printStackTrace();
}
return list; //返回list列表
}