• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

用JNDI绑定tomcat数据源

servlet/jsp 搞代码 7年前 (2018-06-18) 215次浏览 已收录 0个评论

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

http://www.gaodaima.com/?p=44276用JNDI绑定tomcat数据源

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

欢迎大家阅读《用JNDI绑定tomcat数据源》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:用JNDI绑定tomcat数据源

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址