Proxool连接池使用方法
首先,?你要把下载?proxool?的?lib?下面所有的?jar?文件,?放到?WEB-INF/lib?下面,?
另外,?把你的?jdbc?driver?也放到相同的?lib,? 接著就是设定?/WEB-INF/web.xml? web.xml #########web.xml?start?here? <?xml?version="1.0"?encoding="UTF-8"?> <!DOCTYPE?web-app? PUBLIC?"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN"? "/WEB-INF/dtds/web-app_2_3.dtd"> <web-app> <display-name>proxool</display-name> <servlet> ??<servlet-name>Admin</servlet-name> ??<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class> </servlet> <servlet-mapping> ??<servlet-name>Admin</servlet-name> ??<url-pattern>/admin</url-pattern> </servlet-mapping>? </web-app> #########web.xml?end?here? SECTION?02?透过?ProxoolDriver?取得?connection? 建立一个?jsp?or?DAO?Bean,?透过?org.logicalcobwebs.proxool.ProxoolDriver?建立?Connection test.jsp <%@page?import="java.sql.*"%> <% Connection?connection?=?null; try?{ Class.forName("org.logicalcobwebs.proxool.ProxoolDriver"); connection?=?DriverManager.getConnection( "proxool.test:org.gjt.mm.mysql.Driver:jdbc:mysql://localhost:3306/test", "root", "password" ); }?catch?(Exception?e)?{ out.println(e); } out.println("OK"); %> SECTION?04?检视?pooling?现在状态? 执行? http://localhost:8080/proxool-test/admin??如果没有任何?pool?状态的时候,?你只会看到?Pools?这几个字,?所以你先执行? http://localhost:8080/proxool-test/test.jsp??建立一个?connection,?就可以监控?connection?pooling?的状态了.? SECTION?05?使用?properties?或者?xml?来设定?DB?URL?及?Driver? 可以采用?xml?设定,?在程式中使用?JAXPConfigurator.configure("proxool.xml",?false);?将资料设定? WEB-INF/proxool.xml <?xml?version="1.0"?encoding="ISO-8859-1"?> <!--?the?proxool?configuration?can?be?embedded?within?your?own?application's. Anything?outside?the?"proxool"?tag?is?ignored.?--> <something-else-entirely> ??<proxool> ????<alias>xml-test</alias> ????<driver-url>jdbc:mysql://localhost:3306/test</driver-url> ????<driver-class>org.gjt.mm.mysql.Driver</driver-class> ????<driver-properties> ??????<property?name="user"?value="root"/> ??????<property?name="password"?value="password"/> ????</driver-properties> ????<maximum-connection-count>10</maximum-connection-count> ????<house-keeping-test-sql>select?CURRENT_DATE</house-keeping-test-sql> ??</proxool> </something-else-entirely> 也可以采用?properties,?在程式?PropertyConfigurator.configure("proxool.properties");?将资料设定? WEB-INF/proxool.properties jdbc-0.proxool.alias=property-test jdbc-0.proxool.driver-url=jdbc:mysql://localhost:3306/test jdbc-0.proxool.driver-class=org.gjt.mm.mysql.Driver jdbc-0.user=root jdbc-0.password=password jdbc-0.proxool.maximum-connection-count=10 jdbc-0.proxool.house-keeping-test-sql=select?CURRENT_DATE 如果在?Web?使用,?在?web.xml?也可以设定?ServletConfigurator?Servlet?来注册 <?xml?version="1.0"?encoding="UTF-8"?> <!DOCTYPE?web-app? PUBLIC?"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN" "/WEB-INF/dtds/web-app_2_3.dtd"> <web-app> <display-name>proxool</display-name> <servlet> ??<servlet-name>ServletConfigurator</servlet-name> ??<servlet-class> ??org.logicalcobwebs.proxool.configuration.ServletConfigurator ??</servlet-class> ? ??<init-param> <param-name>xmlFile</param-name> <param-value>WEB-INF/proxool.xml</param-value> ??</init-param> ???<load-on-startup>1</load-on-startup> </servlet>? <servlet> ??<servlet-name>Admin</servlet-name> ??<servlet-class> ??org.logicalcobwebs.proxool.admin.servlet.AdminServlet ??</servlet-class> </servlet> <servlet-mapping> ??<servlet-name>Admin</servlet-name> ??<url-pattern>/admin</url-pattern> </servlet-mapping>? </web-app> 在程式中,?只需要利用到别名就可以呼叫?connection?pool?里面的?connection?来使用了? <%@page?import="java.sql.*;"%> <% Connection?connection?=?null; try?{ Class.forName("org.logicalcobwebs.proxool.ProxoolDriver"); connection?=?DriverManager.getConnection("proxool.xml-test"); }?catch?(Exception?e)?{ out.println(e); } out.println("ok"); %> SECTION?06?使用?connection.close()?关闭?connection? 以上的例子我都没有写?close,?在?connection?做完之后记得使用?close()?来关闭,否则很快就会到达最大连接数的.? SECTION?07?中文问题 和往常一样,中文的问题就会出现。对于mysql,好消息是写入数据库的中文可以正常,坏消息是显示的中文还是不正常。 和以往的方法不一样,要正确显示,必须用 String?des?=?new?String(s_string.getBytes("GBK"),"iso8859-1"); 把GBK转为iso8859-1就可以正常使用了,另外,用下面的方法也可以解决: 在MYSQL的MY.INI里加上 [mysqld] default-character-set?=?gb2312 [client] default-character-set?=?gb2312 SECTION?07?多类型连接的问题 经常在应用中即需要连接MYSQL,又需要连接ORACLE,又该如何去实现呢?我们可以用proxool.xml来实现: <?xml?version="1.0"?encoding="UTF-8"?> <foo> ?<proxool> ?<alias>xfort</alias> ?<driver-url>jdbc:jtds:sqlserver://xforttest/XFORT</driver-url> ?<driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class> ?<driver-properties> ?<property?name="user"?value="xfort"?/> ?<property?name="password"?value="xfort"?/> ?</driver-properties> ?</proxool> ?<proxool> ?<alias>xfort5</alias> ?<driver-url>jdbc:jtds:sqlserver://xforttest/XFORT5</driver-url> ?<driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class> ?<driver-properties> ?<property?name="user"?value="xfort"?/> ?<property?name="password"?value="xfort"?/> ?</driver-properties> ?</proxool> </foo> 用的时候: ?JAXPConfigurator.configure("proxool.xml",?false); ?Connection?conn?=?DriverManager.getConnection("proxool.xfort"); ?PreparedStatement?pstmt?=?conn.prepareStatement("SELECT?*?FROM?table"); ?pstmt.executeQuery(); ?conn.close(); ?conn?=?DriverManager.getConnection("proxool.xfort5"); ?pstmt?=?conn.prepareStatement("SELECT?*?FROM?table"); ?pstmt.executeQuery(); ?conn.close(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |