星期六, 十一月 05, 2005

tomcat+datasource

这两天在调试程序发现tomcat下的工具使datasource用起来很简单,所以把建立过程写出来与大家分享。班门弄斧,有错欢迎指正。
首先要建立一个给应用程序使用的数据源,假如你的应用程序部署在/test下,那么打开并登陆http://localhost:8080/admin/
tomcat server->service->Host(localhost)->Context(/test)->Resources->Datasource
在右上方的下拉列表里选Create New DataSource
Jndi Name是资源引用的名称,由你起,这里用jdbc/user
Datasource URL就是你平时用DriverManager.getConnetion(url)里的url,但不要用户名和密码信息,比如:jdbc:mysql://localhost/database_name?autoReconnect=true (autoreconnect是连接被断开后tomcat会自动重连)
Driver Class就相当于Class.forName(className)里的className,mysql用org.gjt.mm.mysql.Driver
其他你自己看着办,据tomcat-docs上说是用空的数据库密码会导致连接失败,我没试过,但为了安全性还是给数据库加上密码。
点save就ok了。
然后你部署在/test下的应用程序就能用这个datasource了,以后建立数据库连接的时候就这样:
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/user");
//也就是java:comp/env + 你起的jndi name
//原理你可以看j2ee tutorial
//由于tomcat的链接池实现是按j2ee标准的,所以你的代码不用修改就可以在
//weblogic等j2ee容器中使用
Connection conn = ds.getConnection();//这句取得了数据库链接
//下面就使你使用Connection的代码了,一切都和以前一样,从这里开始
是不是很简单?以后用class.forname的都不好意思给你打招呼了:-)
最后要注意的就是平时我们使用数据库的时候因为连接很费时,所以要早连接,晚释放,而用datasource(连接池)时,则要晚连接,早释放,因为连接是从链接池中取得的,释放则返回链接池,这样就能保证链接池有足够多的连接数。释放使用conn.close()就可以了,这不是直接关闭到数据库的链接,而是把链接返回链接池。

没有评论: