关于Tomcat中数据源的配置,不同的版本方法略有不同,如果不注意这些差别,就会使得Web应用在不同环境中布署出现问题。
Tomcat 5的数据源配置跟Tomcat 5.5的数据源配置有很多的差别,Tomcat 6的数据源配置跟Tomcat 5.5的配置基本上相同。
这里用Tomcat6+MySQL来配置数据源:
在WebRoot目录下,新建一个META-INF的目录(假如不存在),在该目录下创建一个context.xml文件,(或conf目录下的全局context.xml),并且在context.xml文件当添加以下的配置信息(要根据自己的情况稍加修改):
这里选在META-INF下新建一个context.xml文件,该文件的内容为:
//Resource要根据你自己的情况配置
name: 指定数据源在容器中的JNDI名
maxActive:指定数据源最大活动连接数
maxIdle:指定数据源中最大的空闲连接数
maxWait:指定数据源中最大等待获取连接的客户端
username:指定连接数据库的用户名
password:指定连接数据库的密码
driverClassName:指定连接数据库的驱动
url:指定数据库服务的URL
在以往的tomcat当中还需要在web.xml指定相应的resource,在tomcat 5.5以后的版本不写也可以,但建议还是配置,配置如下:
//这个很容易看懂,就做解释了。。。
最后,记得把mysql的驱动存放到%TOMCAT_HOME%/lib里面,这是必须的,不然,tomcat没有办法找到driver,也就没法帮你new.
Ok,配置完成,编写一个小小的程序测试下。
---------------------------------------------------------------------------
这里假设已经要上面的步骤配置好,
用MyEclipse新建一个Web Project, 项目名:DataSource
编写一个测试用的Servlet,放在wen.hui.ds这个包下, 代码如下:
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 TestDataSource extends HttpServlet {
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/dstest");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from user");
while(rs.next()) {
System.out.println(rs.getString(1) + ", " + rs.getString(2));
}
rs.close();
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
在web.xml中配置servlet
建一个数据库:
drop database if exists dstest;
create database dstest;
use dstest;
create table user(
username varchar(20) primary key,
password varchar(20) not null
);
insert into user values('wwh', '123');
insert into user values('wwf', '123');
insert into user values('wwe', '123');
部署项目, 访问http://localhost:8080/DataSource/test
后台输出:
wwe, 123
wwf, 123
wwh, 123