webdn
 
  首页     免费截图     VIP会员区     广告Banner     技术文档     网站模板  
网站截图,网站每日新 !
虚拟主机 域名注册

首页 >> WebDN 技术文档 >> 网络编程 >> JSP 资料大全 >> 用JNDI绑定tomcat数据源

 

用JNDI绑定tomcat数据源

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

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());
}
}



  | 
点击这里给我发消息 | 关于WebDN  |  站点地图  |  联系我们  |  WebDN 会员  |  支付方式  |  友情链接  |  隐私政策
© 2004-2008 WebDN.com 版权所有. 沪ICP备05040479号