繁体中文
设为首页
加入收藏
当前位置:JSP技术首页 >> 资料/其它 >> 用JNDI绑定tomcat数据源

用JNDI绑定tomcat数据源

2005-02-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:jsp开发中调用tomcat数据库连接池,可能很多朋友都会,下面这段代码相信用过的人都很熟悉: list1:testpool.jsp 但是许多人不知tomcat启动时,用jndi对数据源做了绑定,所以就不知道如何在j2se中用main函数调用...
关键字:数据源 tomcat JNDI

jsp开发中调用tomcat数据库连接池,可能很多朋友都会,下面这段代码相信用过的人都很熟悉:

list1:testpool.jsp

但是许多人不知tomcat启动时,用jndi对数据源做了绑定,所以就不知道如何在j2se中用main函数调用这个数据源,其实,只要把testpool.jsp做一点改动:

InitialContext ctx=new InitialContext();

Object o = ctx.lookup("java:comp/env/hibernate");

out.print("class="+o.getClass().getName());

DataSource ds=(DataSource)o;

.......

即利用反射API打印出这个已注册到jndi中数据源对象的class全名,就会知道原来数据源是一个“org.apache.commons.dbcp.BasicDataSource”对象,这个class就在%Tomcat%\common\lib下commons-dbcp-1.2.1.jar包里,与其关联的还有commons-collections-3.1.jar、commons-pool-1.2.jar。

把以上三个包加入当前的工作环境,用下面这段代码就可调用连接池了。我用的是mysql数据库,请在调试时加入mysql的jdbc驱动和%Tomcat%\common\lib下的naming-java.jar

public static void main(String[] args) throws HibernateException {

try{

BasicDataSource bdds = new BasicDataSource();

//设置数据库驱动

bdds.setDriverClassName("org.gjt.mm.mysql.Driver");

//设置JDBC的URL

bdds.setUrl("jdbc:mysql://localhost/sample");

bdds.setUsername("root");

bdds.setPassword("1234");

//设置连接池初始大小

bdds.setInitialSize(2);

//JNDI配置

Hashtable env = new Hashtable();

env.put("java.naming.factory.initial","org.apache.naming.java.javaURLContextFactory");

InitialContext ctx=new InitialContext(env);

//数据源绑定到JNDI

ctx.bind("tomcatDS",bdds);

//在JNDI查找数据源

DataSource ds = (DataSource)ctx.lookup("tomcatDS");

Connection con = ds.getConnection();

Statement stmt = con.createStatement();

String strSql = "select * from user";

ResultSet rs = stmt.executeQuery(strSql);

while(rs.next()){

System.out.println("id="+rs.getString(1));

}

rs.close();

stmt.close();

con.close();

}catch(Exception ex){

System.out.print(ex.toString());

}

}

责任编辑:admin
相关文章