Proxool连接池使用方法

首先, 你要把下载 proxool 的 lib 下面所有的 jar 文件, 放到 WEB-INF/lib 下面,
另外, 把你的 jdbc driver 也放到相同的 lib,
接著就是设定 /WEB-INF/web.xml

web.xml
#########web.xml start here


PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"/WEB-INF/dtds/web-app_2_3.dtd">

proxool

Admin
org.logicalcobwebs.proxool.admin.servlet.AdminServlet



Admin
/admin




#########web.xml end here


SECTION 02 透过 ProxoolDriver 取得 connection

建立一个 jsp or DAO Bean, 透过 org.logicalcobwebs.proxool.ProxoolDriver 建立 Connection

test.jsp





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-test
jdbc:mysql://localhost:3306/test
org.gjt.mm.mysql.Driver


【Proxool连接池使用方法】

10
select CURRENT_DATE




也可以采用 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 来注册


PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"/WEB-INF/dtds/web-app_2_3.dtd">

proxool


ServletConfigurator

org.logicalcobwebs.proxool.configuration.ServletConfigurator



xmlFile
WEB-INF/proxool.xml


1




Admin

org.logicalcobwebs.proxool.admin.servlet.AdminServlet




Admin
/admin





在程式中, 只需要利用到别名就可以呼叫 connection pool 里面的 connection 来使用了





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来实现:




xfort
jdbc:jtds:sqlserver://xforttest/XFORT
net.sourceforge.jtds.jdbc.Driver






xfort5
jdbc:jtds:sqlserver://xforttest/XFORT5
net.sourceforge.jtds.jdbc.Driver







用的时候:

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

    推荐阅读