用JNDI绑定tomcat数据源

王朝system·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

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

list1:testpool.jsp

<%

InitialContext ctx=new InitialContext();

DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql");

Connection conn = ds.getConnection();

Statement stmt = conn.createStatement();

String strSql = " select * from t_user";

ResultSet rs = stmt.executeQuery(strSql);

......

stmt.close();

rs.close();

conn.close();

%>

但是许多人不知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());

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航