Proxool数据库连接池使用方法

    xiaoxiao2021-11-05  89

    转载:http://blog.csdn.net/yjboy1982/article/details/1514011

    首先从 http://proxool.sourceforge.net/ 下载proxool-0.9.0RC2.zip 解压后,把commons-logging.jar和proxool-0.9.0RC2.jar放到工程的lib文件夹里面。

    连接方法一:  和JDBC连接方法类似。

    JDBC连接方法:

    Class.forName( " com.mysql.jdbc.Driver " ); // 数据库的驱动 Connection con  =  DriverManager.getConnection( " jdbc:mysql://127.0.0.1:3306/student " , " root " , " root " ); // 连接的url

     proxool连接方法:

    Class.forName( " org.logicalcobwebs.proxool.ProxoolDriver " ); Connection con  =  DriverManager.getConnection( " proxool.aaa:com.mysql.jdbc.Driver:jdbc:mysql://127.0.0.1:3306/student " , " root " , " root " );

    需要注意的是,Class.forName加载的是proxool的驱动。 getConnection里url的内容是("proxool.别名:数据库的驱动:连接的url") 这里的别名可以随便填写,但一定要写……

    连接方法二: XML

    首先在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 > mysql </ alias > < driver-url > jdbc:mysql://127.0.0.1:3306/student </ driver-url > < driver-class > com.mysql.jdbc.Driver </ driver-class > < driver-properties > < property  name ="user"  value ="root" /> < property  name ="password"  value ="root" /> </ driver-properties > < maximum-connection-count > 10 </ maximum-connection-count > < house-keeping-test-sql > select CURRENT_DATE </ house-keeping-test-sql > </ proxool > </ something-else-entirely >

    proxool.xml这个文件是用来设置别名的。其中<proxool>标签就是别名的设置段。 alias是别名; driver-url是驱动的url,就是连接的url; driver-class是驱动的类,就是数据库驱动; driver-properties是驱动的属性,可以设置登陆数据库的用户名和密码。 maximum-connection-count是最大连接数。 在工程的web.xml里添加

    <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>

    这段标记是要求tomcat在启动的时候加载proxool驱动并且指明 proxool.xml的位置。 不写的话,上面设置的别名就没用了。 做完上面的工作后,建立连接只需要

    Connection con = DriverManager.getConnection("proxool.mysql"); 这一句就可以了,Class.forName也不需要了。 注:别名是可以设置多个的,我们在连接多种数据库的时候就可以设置多个别名方便访问了!! 查看proxool的状态 在工程的web.xml里添加 <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> 就可以通过/admin来访问proxool的状态了。 

    import Java.sql.*; import org.apache.log4j.*;

    public class InitAction {   private Connection conn;   Logger log  = Logger.getLogger("InitAction");

      public Connection getConnection()   {    try    {    conn = DriverManager.getConnection("proxool.xml-db");    }    catch(Exception ex)    {      log.error("数据库连接异常:"+ex.toString());    }    if(conn==null)    {     log.error("连接无效...");    }    return conn;   }    }

    而每次在使用时只需要:

    Connection conn = new InitAction().getConnection();

    即可,真是太方便了!

    注:使用完之后需要一定得conn.close(),不然连接很快会被用光..

     

    ----------------------

               if (conn != null) {                 System.out.println("数据连接测试成功!");             }             Stmt = conn.createStatement();             //Rst = Stmt.executeQuery("select * from t_function t");             Rst = Stmt.executeQuery("select * from nodetype t");             //Rst = Stmt.executeQuery("select * from insurecorp t");

                while (Rst.next()) {                 System.out.println(Rst.getString(1));             }         } catch (SQLException e) {             System.out.println("error" + e);         } catch (ProxoolException e1) {             System.out.println(e1);         } finally {             try {                 if (conn != null) {                     conn.close();                     Stmt.close();                     Rst.close();                 }             } catch (SQLException e2) {                 System.out.println(e2);             }         }     }

        public static void main(String[] args) {         test databean = new test();         databean.TestReadPro();         //databean.TestReadXML();     } }

     

    XML配置文件如下:

    <?xml version="1.0" encoding="UTF-8"?> <something-else-entirely> <proxool> <alias>Fee</alias> <driver-url>jdbc:Oracle:thin:@90.0.12.112:1521:ORCL</driver-url> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <driver-properties> <property name="user" value="feemanager"/> <property name="password" value="1"/> </driver-properties> <maximum-connection-count>500</maximum-connection-count> <house-keeping-test-sql>select sysdate from DUAL</house-keeping-test-sql> </proxool> </something-else-entirely>

     

    properties文件配置:

    //网上查车数据库 jdbc-1.proxool.alias=WEBGIS jdbc-1.proxool.driver-class=oracle.jdbc.driver.OracleDriver jdbc-1.proxool.driver-url=jdbc:oracle:thin:@192.168.0.1:1521:ORCL jdbc-1.user=gis jdbc-1.password=1 jdbc-1.proxool.maximum-connection-count=20 jdbc-1.proxool.prototype-count=4 jdbc-1.proxool.house-keeping-test-sql=select sysdate from DUAL jdbc-1.proxool.verbose=true jdbc-1.proxool.statistics=10s,1m,1d jdbc-1.proxool.statistics-log-level=ERROR //标准版数据库 jdbc-2.proxool.alias=Navtech jdbc-2.proxool.driver-class=oracle.jdbc.driver.OracleDriver jdbc-2.proxool.driver-url=jdbc:oracle:thin:@192.168.0.2:1521:orcl jdbc-2.user=Nav jdbc-2.password=1 jdbc-2.proxool.maximum-connection-count=20 jdbc-2.proxool.prototype-count=4 jdbc-2.proxool.house-keeping-test-sql=select sysdate from DUAL jdbc-2.proxool.verbose=true jdbc-2.proxool.statistics=10s,1m,1d jdbc-2.proxool.statistics-log-level=ERROR //计费数据库 jdbc-3.proxool.alias=Fee jdbc-3.proxool.driver-class=oracle.jdbc.driver.OracleDriver jdbc-3.proxool.driver-url=jdbc:oracle:thin:@192.168.0.3:1521:ORCL jdbc-3.user=fee jdbc-3.password=1 jdbc-3.proxool.maximum-connection-count=20 jdbc-3.proxool.prototype-count=4 jdbc-3.proxool.house-keeping-test-sql=select sysdate from DUAL jdbc-3.proxool.verbose=true jdbc-3.proxool.statistics=10s,1m,1d jdbc-3.proxool.statistics-log-level=ERROR

    特别注意:

    1、在用main类测试时可以直接将XML或properties文件放置于工程目录下。

    2、如果将以上文件放于classes目录下时必须给出绝对路径,当然也可以使用变通做法,我是这样做的:

            try {             InputStream is = getClass().getResourceAsStream("/Proxool.properties");             Properties properties = new Properties();             properties.load(is);             PropertyConfigurator.configure(properties);         } catch (IOException ex) {             ex.printStackTrace();         } catch (ProxoolException e1) {             e1.printStackTrace();         }

    ------------

     5、在调用数据库连接代码:        Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");        Connection conn = DriverManager.getConnection("proxool.Develop");

         6、利用proxool监控工具查看数据库运行状态。地址:./admin       以上配置是采用的XML文件方式,也可以采用properties配置方式: proxool.alias=Test proxool.driver-class=oracle.jdbc.driver.OracleDriver proxool.driver-url=jdbc:oracle:thin:@192.168.10.160:1521:orcl proxool.user=test proxool.password=testpass proxool.maximum-connection-count=20 proxool.prototype-count=4 proxool.house-keeping-test-sql=select sysdate from DUAL proxool.verbose=true proxool.statistics=10s,1m,1d proxool.statistics-log-level=ERROR <servlet>  <servlet-name>ServletConfigurator</servlet-name>  <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>     <init-param>     <param-name>propertyFile</param-name>     <param-value>WEB-INF/config/Proxool.properties</param-value>   </init-param>   <load-on-startup>1</load-on-startup>  </servlet>  在调用数据库连接代码    Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");    Connection conn = DriverManager.getConnection("proxool.Test"); 还有一些配置属性: maximum-connection-lifetime   最大连接生命周期  默认值:4小时 maximum-active-time:     最大活动时间   默认值:5分钟 maximum-connection-count   最大连接数    默认值:15个 minimum-connection-count   最小连接数    默认值:5个 在用admin调用的时候,可以查看这个WEB应用所有的连接数的状态,虽然这个插件可以把不活动的连接自动放到连接池里,但是如果连接数过多,而不及时KILL的话,对网站的连接是有很大的影响的,建议还是手工KILL。

    转载请注明原文地址: https://ju.6miu.com/read-678015.html

    最新回复(0)