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()); } } |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-30 01:36 , Processed in 0.157112 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.