• 1. Proxool数据连接池王健北京传智播客教育 www.itcast.cn
  • 2. Proxool简介:Proxool是一种Java数据库连接池技术。是sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。 目前是和DBCP以及C3P0一起,最为常见的三种JDBC连接池技术。 目前,Hibernate官方宣布由于Bug太多不再支持DBCP,而推荐使用 Proxool或C3P0。 更多说明见API文档。 北京传智播客教育 www.itcast.cn
  • 3. QUICK-Start:准备包: //以下通过Proxool建立与Mysql的连接 Connection con = null; //加载ProxoolDriver类 Class.forName("org.logicalcobwebs.proxool.ProxoolDriver"); //声明使用的类和URL String url = "jdbc:mysql://127.0.0.1:3306/exam?useUnicode=true&characterEncoding=UTF-8"; String driver = "com.mysql.jdbc.Driver"; //连接数据库,其中proxool.wj中的wj是连接别名,后面使用:隔开 con = DriverManager.getConnection("proxool.wj:"+driver+":"+url,"root","root");北京传智播客教育 www.itcast.cn
  • 4. 通过配置资源文件来建立连接:#properties文件 proxool.maximum-connection-count=20 proxool.house-keeping-test-sql=SELECT CURRENT_DATE user=root password=rootProperties p = new Properties(); //加载本地的资源文件 p.load(Demo2.class.getResourceAsStream("Demo2.properties")); String alias = "wj";//定义别名 String url = "jdbc:mysql://127.0.0.1:3306/exam?useUnicode=true&characterEncoding=UTF-8"; String driver = "com.mysql.jdbc.Driver"; //仍然需要加载proxoodriver驱动 Class.forName("org.logicalcobwebs.proxool.ProxoolDriver"); Connection con = DriverManager.getConnection("proxool."+alias+":"+driver+":"+url,p); System.err.println(">>:"+con); con.close();北京传智播客教育 www.itcast.cn
  • 5. 通过配置XML文件建立与数据库的连接: wj-test com.mysql.jdbc.Driver 10 select CURRENT_DATE 北京传智播客教育 www.itcast.cn
  • 6. 第二步:通过JaxpConfigurator读取配置文件:public class Demo3 { public static void main(String[] args) throws Exception { JAXPConfigurator.configure("./src/com/a/Demo3.xml",false); //wj是别名 Connection con = DriverManager.getConnection("proxool.wj"); System.err.println(">>>>:"+con); con.close(); } }北京传智播客教育 www.itcast.cn
  • 7. 在Java项目中使用ProxoolDataSource:第一步:读取配置文件。 false参数是指不对xml进行验证。 第二步:实例化ProxoolDataSource并指定别名。 第三步:使用DataSource JAXPConfigurator.configure("./src/com/b/Demo1.xml",false); DataSource ds = new ProxoolDataSource("wj-test"); System.err.println(">>>:"+ds.getConnection());北京传智播客教育 www.itcast.cn
  • 8. 在Web项目中使用Proxool的数据连接池:第一步:引入包北京传智播客教育 www.itcast.cn
  • 9. 第二步:在Web.xml中添加Proxool的配置: proxool org.logicalcobwebs.proxool.configuration.ServletConfigurator xmlFile /WEB-INF/conf/proxool.xml 1 admin org.logicalcobwebs.proxool.admin.servlet.AdminServlet admin /admin 北京传智播客教育 www.itcast.cn
  • 10. 第三步:书写Proxool的连接配置文件:在WEB-INF/conf目录下: wj-test com.mysql.jdbc.Driver 10 select CURRENT_DATE 北京传智播客教育 www.itcast.cn
  • 11. 第四步:书写连接池的静态工厂类:package cn.pub; import org.logicalcobwebs.proxool.ProxoolDataSource; /** * Proxool的数据连接池 * @author 王健 */ public class DBPool { private static DataSource dataSource; static{ dataSource = new ProxoolDataSource("wj-test"); } public static DataSource getDatasSource(){ return dataSource; } public static Connection getConn(){ try { return dataSource.getConnection(); } catch (SQLException e) { throw new RuntimeException(e.getMessage(),e); } } }北京传智播客教育 www.itcast.cn
  • 12. 第五步:在Servlet中使用Proxool的连接:public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); QueryRunner run = new QueryRunner(DBPool.getDatasSource()); try { List> list = run.query("select * from stud",new MapListHandler()); for(Map mm:list){ System.err.println(">>:"+mm); out.println("
    "+mm); } } catch (SQLException e) { e.printStackTrace(); } }北京传智播客教育 www.itcast.cn
  • 13. 在地址栏输入以下信息查看监控:http://localhost:8080/project/admin北京传智播客教育 www.itcast.cn
  • 14. 总结:方便。 快捷。 简单。北京传智播客教育 www.itcast.cn