最近做个项目,需要在tomcat,weblogic中写连接池.weblogic还是老样子,照着图形界面配置就可以了.Tomcat我用的是5.5.9.虽说以前用tomcat4版本写过,可早就听说,5版本和4版本的差距很大.所以就提前做好了心里准备,先看了一个帮助文档,花了进一个小时的时间搞定,现在整理出来与大家分享.
其实Tomcat5要比tomcat4简单多了,如果还是按tomcat4的套路来,呵呵,那恐怕那走很多弯路了.
第一步:在tomcat5→common→lib下加入你所连接数据库的驱动包.这里我用的mysql数据库.
第二步:在tomcat5→conf→Catalina→localhost配置一个xml文件.这里一定要注意,必须和你的项目名称是一模一样的.我用的项目名为testTomcat.testTomcat.xml文件配置如下:
<Resource name='jdbc/mysql' auth='Container'
type='javax.sql.DataSource' driverClassName='com.mysql.jdbc.Driver'
url='jdbc:mysql://127.0.0.1:3306/addressbooksample'
username='root' password='' maxActive='20' maxIdle='10'
maxWait='-1'/>
<ResourceLink
global="UserDatabase"
name="users"
type="org.apache.catalina.UserDatabase"/>
这里就和以前的tomcat4版本不一样了,以前要在server.xml配置.而tomcat5版本直接在这里配置就可以了.
第三步:在你项目的web.xml配置如下:
<resource-ref>
<description>mysql for 192.1.1.156 </description>
<res-ref-name> jdbc/mysql </res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
注意:这里的res-ref-name名字必须和testTomcat.xml文件中的一样.其实这一步省去也是可以的.但还是建议配置一下.
第四步:建一个JSP页面来感受一下成功的喜悦吧.页面代码如下
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
ds =(javax.sql.DataSource) ctx.lookup(
"jdbc/mysql");
System.out.println("Init datasource OK @!");
注意:别忘了引入相关的包哦.还要注意的是这里不能用主函数来测试.因为你主函是得到tomcat的上下文的.
在项目中应用如下:
public class TomcatJDNI {
public static String
DATASOURCE_CONFIG_FILE="test.db";
public static DataSource ds;
static{
try{
ResourceBundle rb = ResourceBundle.getBundle(DATASOURCE_CONFIG_FILE);
String dsName = rb.getString("datasource_name");
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
ds =(javax.sql.DataSource) ctx.lookup(dsName);
System.out.println("Init datasource OK @!");
}catch(Exception e){
System.out.println("can’t init datasource !");
}
}
public static Connection getConnection() throws SQLException{
return ds.getConnection();
}
}
这里的test.db是一个db.properties文件.文件内容如下
datasource_name= jdbc/mysql
这样扩展性比较好.连接其它的数据库,只需要改动此文件,无需重新编译.
就到这里吧
Good luck!