`
Baple
  • 浏览: 12503 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

Java应用中使用Proxool

阅读更多
本文题目没有强调的是Java应用,不是Java Web应用,原因是从网上找有关Proxool的例子,全是一个摸样,都是将讲解Java Web中的应用,真没劲,难道Proxool离开了web就不能用了?不信你可以google一把看看。

在阅读了Proxool的官方指南后,我写了个简单测试,扔出来,希望能对大家有用。

环境:
JDK 1.5
proxool-0.9.1.zip
Oracle 10g

http://ncu.dl.sourceforge.net/project/proxool/proxool/0.9.1/proxool-0.9.1.zip

Proxool准确说还算不上一个连接池,因为里面没有一个获取DataSource对象的方法,也没有一个获取“**Pool”的途径。因此要使用Proxool连接池,有两条路可走,一是自己实现一个连接池的管理工具,二是通过开源的框架来使用,因为好多开源框架实现了池管理功能,比如Spring、Hibernate、iBatis等等。

Proxool的性能据说还不错,常常与Spring、Hibernate等整合使用,倒很方便。

这里我不打算实现什么连接池管理工具,也不使用开源框架,而是仅仅利用Proxool提供的功能来做一个数据库操作。

1、写Proxool的配置
Proxool提供了一个接口,用来读取xml格式或properties格式的配置信息,用来初始化Proxool所需的参数。这里我用xml配置,当然这个XML是网上找的,我懒得写,仅仅改吧改吧能用。

<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
        <proxool>
                <alias>timalias</alias>
                <!--数据源的别名-->
                <driver-url>jdbc:oracle:thin:@192.168.104.192:1521:tim</driver-url>
                <!--url连接串-->
                <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
                <!--驱动类-->
                <driver-properties>
                        <property name="user" value="tim"/>
                        <!--用户名-->
                        <property name="password" value="tim_8968888"/>
                        <!--密码-->
                </driver-properties>
                <!--最大连接数(默认5个),超过了这个连接数,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 -->
                <maximum-connection-count>100</maximum-connection-count>
                <!--最小连接数(默认2个)-->
                <minimum-connection-count>10</minimum-connection-count>
                <!--proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 默认30秒-->
                <house-keeping-sleep-time>90000</house-keeping-sleep-time>
                <!--没有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受-->
                <maximum-new-connections>10</maximum-new-connections>
                <!--最少保持的空闲连接数(默认2个)-->
                <prototype-count>5</prototype-count>
                <!--在使用之前测试-->
                <test-before-use>true</test-before-use>
                <!--用于保持连接的测试语句 -->
                <house-keeping-test-sql>select sysdate from dual</house-keeping-test-sql>
        </proxool>
</something-else-entirely>

2、写测试类
import org.logicalcobwebs.proxool.configuration.JAXPConfigurator;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
* Created by IntelliJ IDEA.
*
* @author leizhimin 2009-10-10 17:59:47
*/
public class TestProxool {
        public static String dburl = "jdbc:oracle:thin:@192.168.104.192:1521:tim";
        public static String user = "tim";
        public static String password = "tim_8968888";

        /**
         * JDBC方式测试
         *
         * @throws Exception
         */
        public static void test1() throws Exception {
                String testsql = "select * from village t where lastid = 346";
                //1:注册驱动类
                Class.forName("oracle.jdbc.driver.OracleDriver");
                //2:创建数据库连接
                Connection conn = DriverManager.getConnection(dburl, user, password);
                //3:创建执行SQL的对象
                Statement stmt = conn.createStatement();
                //4:执行SQL,并获取返回结果
                ResultSet rs = stmt.executeQuery(testsql);
                //5:处理返回结果,此处打印查询结果
                while (rs.next()) {
                        System.out.print(rs.getLong("id") + "\t");
                        System.out.print(rs.getString("name") + "\t");
                        System.out.println();
                }
                //6:关闭数据库连接
                conn.close();
        }

        /**
         * proxool方式测试
         *
         * @throws Exception
         */
        public static void test2() throws Exception {
                //Java应用中先要加载配置文件,否则谁知道你配置给谁用的
                JAXPConfigurator.configure("F:\\_test\\synorg\\src\\proxool.xml", false);
                String testsql = "select * from village t where lastid = 346";
                //1:注册驱动类,这次这个驱动已经不是Oracle的驱动了,是Proxool专用的驱动
                Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
                //2:创建数据库连接,这个参数是一个字符串,是数据源的别名,在配置文件中配置的timalias,参数格式为:proxool.数据源的别名
                Connection conn = DriverManager.getConnection("proxool.timalias");
                //3:创建执行SQL的对象
                Statement stmt = conn.createStatement();
                //4:执行SQL,并获取返回结果
                ResultSet rs = stmt.executeQuery(testsql);
                //5:处理返回结果,此处打印查询结果
                while (rs.next()) {
                        System.out.print(rs.getLong("id") + "\t");
                        System.out.print(rs.getString("name") + "\t");
                        System.out.println();
                }
                //6:关闭数据库连接
                conn.close();
        }


        public static void main(String[] args) throws Exception {
                test2();
        }
}

运行结果:
2009-10-14 18:13:05    - INFO    org.logicalcobwebs.proxool.ProxoolFacade         - Proxool 0.9.1 (23-Aug-2008 11:10)
2009-10-14 18:13:05    - WARN    org.logicalcobwebs.proxool.timalias         - Use of proxool.maximum-new-connections is deprecated. Use more descriptive proxool.simultaneous-build-throttle instead.
5411  张一村   
5412  张二村   
5413  张三村   
5414  张四村   
5415  南原村   
5416  辛庄村   
5417  凡村   
5418  西阳村   
5419  人马村   
5420  前关村   
5421  后关村   
5422  赵村   
5423  水淆村   
5424  沟东村   
5425  陈村   
5426  窑店村   
5427  坡头村   
20588  大安头   
20589  涧里村   
20590  人马寨   
20591  白草村   
20592  窑院村   
20593  寺下村   
20594  反上村   
33651  小安头   
33652  五花岭   
33653  东沟   
33654  西沟   
33655  南沟   
33656  王村   
33657  营前   
33659  东阳   
33661  太阳   
33663  丰阳   
33665  宜村   
33667  窑头   
32225  石原村   
32226  庙上村   
32227  庙洼   
38739  丁管营   
38841  涧西   
2009-10-14 18:13:06    - INFO    org.logicalcobwebs.proxool.timalias         - Shutting down 'timalias' pool immediately [Shutdown Hook]
2009-10-14 18:13:07    - INFO    org.logicalcobwebs.proxool.PrototyperController         - Stopping Prototyper thread
2009-10-14 18:13:07    - INFO    org.logicalcobwebs.proxool.HouseKeeperController         - Stopping HouseKeeper thread

Process finished with exit code 0

因为使用了log4j,这个结果里面输出了一些日志信息。

3、说明

Proxool的配置文件路径不能使用ClassPath,我查看过接口代码,可以传入一个XmlReader、或流来解决,这里写成绝对路径就凑合着能跑起来就行。

也支持Properties的配置,则个可以参考官方文档,也很方便的。

有关配置参数,网上的文档一堆一堆的重复,大家随便找篇就行。
http://wallimn.javaeye.com/blog/486550

想看Web应用的,参看:
http://blog.csdn.net/goodhumor/archive/2008/03/04/2144911.aspx

本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/212387
分享到:
评论

相关推荐

    java项目使用 proxool

    在非Web环境中使用Proxool,意味着我们需要在独立的Java应用程序中集成这个库来处理数据库连接。下面将详细介绍如何在Java项目中配置和使用Proxool。 1. **Proxool简介** Proxool是Apache Software Foundation的一...

    java使用proxool连接mysql数据库

    下面将详细介绍如何在 Java 中使用 Proxool 来连接 MySQL 数据库。 首先,我们需要了解 Proxool 的基本概念。Proxool 是 Proxy + Pool 的组合,意味着它通过代理机制管理数据库连接池。它在应用和数据库之间创建了...

    oracle proxool jar jdbc jar包 proxool源码包 Java实现 oracle proxool 实例

    在Java应用中,使用数据库连接池可以显著提高性能和资源利用率,因为它们减少了创建和销毁数据库连接的开销。Proxool是Apache软件基金会的一个项目,它支持多种数据库,包括Oracle,这是非常流行的企业级数据库系统...

    JAVA数据库连接池proxool

    然而,值得注意的是,Proxool项目已经在2010年停止了更新,现代的Java应用更多地选择像HikariCP、Druid或Apache DBCP2这样的更活跃且性能更优的连接池实现。尽管如此,理解Proxool的工作原理和使用方式,对于理解...

    java数据库连接池Proxool

    Java数据库连接池(Database Connection Pool)是Java应用中用于管理数据库连接的一种技术,它通过复用已存在的数据库连接,减少创建和销毁连接的开销,从而提高了应用的性能和效率。Proxool是其中一个轻量级、开源...

    oracle proxool jar jdbc jar包 proxool源码包 Java oracle proxool 实例

    Proxool作为连接池组件,它与多种数据库兼容,包括Oracle,这使得它在Java应用中得到了广泛使用。 标题中的"oracle proxool jar jdbc jar包"指的是Oracle Proxool的jar文件以及用于连接Oracle数据库的JDBC驱动包。...

    java连接池proxool

    连接池在Java应用程序中起着桥梁的作用,它管理数据库连接,避免了频繁创建和销毁连接的开销。Proxool是Apache软件基金会开发的一个开源数据库连接池实现,它提供了一种灵活且可配置的方式来管理数据库连接资源。 ...

    proxool 的使用 配置

    "工具" 标签则意味着 Proxool 是一个实用的开发工具,可以集成到任何 Java 应用中,简化数据库连接的管理。Proxool 提供了一些监控和诊断工具,如 `http://localhost:8080/proxool.*`,通过这个简单的 HTTP 服务,...

    proxool-0.9.1.jar,proxool-cglib.jar

    Proxool是一个开源的数据库连接池解决方案,它允许开发者在Java应用程序中高效地管理数据库连接。数据库连接池是一种在多线程、高并发环境下优化数据库访问性能的技术,通过预先创建并维护一定数量的数据库连接,...

    proxool数据库连接池实例(带监控功能)

    在Java应用中,Proxool能够与JDBC无缝集成,为应用程序提供高效的数据访问服务。 **Proxool的基本工作原理:** Proxool维护一个连接池,当应用程序需要数据库连接时,不会直接创建新的物理连接,而是从池中获取一个...

    Jsp使用Proxool连接池

    在Java Web开发中,数据库连接管理是一项重要的任务,它直接影响到应用程序的性能和资源利用率。`JSP`(JavaServer Pages)作为动态网页技术,常常需要与数据库进行交互。为了提高效率和避免资源浪费,开发者通常会...

    proxool-0.9.1.jar proxool_cglib-0.9.1.jar

    在Java应用程序中,尤其是在处理大量并发用户访问时,连接池能够显著提高性能和资源利用率。 **Proxool连接池** Proxool是基于Proxy的概念,它在数据库连接上创建了一个代理层,使得多个客户端可以共享同一个物理...

    proxool配置

    在Java开发中,数据库连接管理是至关重要的,它关乎到应用的性能、稳定性和资源利用率。Proxool是一个优秀的开源数据库连接池实现,为开发者提供了高效且灵活的数据库连接管理方案。本文将深入探讨Proxool的配置及其...

    proxool_0.9.1

    在Proxool中,CGLIB可能用于创建动态代理,以便在不修改源代码的情况下对数据库连接进行监控和管理。 标签“java 数据库连接池 proxool 中文乱码”揭示了这个包特别适用于解决在Java环境下使用Proxool时可能出现的...

    proxool-0.9.1.zip

    数据库连接池是现代Java应用服务器的关键组件,Proxool提供了如下主要功能: 1. **连接复用**:避免频繁创建和销毁数据库连接,减少系统开销。 2. **性能监控**:提供连接池的统计信息,如连接使用率、等待时间等,...

    配置Hibernate使用Proxool连接池

    Hibernate是一个流行的Java ORM(对象关系映射)框架,它简化了Java应用与数据库之间的交互,通过提供一种对象-关系映射机制,使得开发者可以使用面向对象的方式来操作数据库。而Proxool是Apache软件基金会的一个...

    proxool.jar包,proxool连接池用到的两个jar包

    Proxool是一个轻量级、高效的数据库连接池解决方案,它允许开发者在Java应用程序中管理数据库连接,以提高性能并减少资源消耗。下面将详细介绍`proxool.jar`及其在数据库连接池中的作用和相关知识点。 1. **数据库...

    使用proxool连接sybase时处理事务的问题

    在`WrappedConnection.class`和`WrappedConnection.java`这两个文件中,我们可以看到`Proxool`如何封装原生的数据库连接以提供额外的功能。`WrappedConnection`通常会包含对原始数据库连接的包装,以便添加事务管理...

    proxool-0.8.3 jar包及应用实例

    `proxool` 是一个开源的数据库连接池(Connection Pool)实现,它为Java应用程序提供了一种高效、灵活的方式来管理数据库连接。在`proxool-0.8.3`版本中,开发者可以利用此jar包来优化数据库访问性能,减少数据库...

Global site tag (gtag.js) - Google Analytics