(Java 功能篇) Java Proxool

2023-11-13

本文题目没有强调的是Java应用,不是Java Web应用,原因是从网上找有关Proxool的例子,全是一个摸样,都是将讲解Java Web中的应用,真没劲,难道Proxool离开了web就不能用了?不信你可以google一把看看。
 
在阅读了Proxool的官方指南后,我写了个简单测试,扔出来,希望能对大家有用。
 
环境:
JDK 1.5
proxool-0.9.1.zip
Oracle 10g
 
 
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的配置,则个可以参考官方文档,也很方便的。
 
有关配置参数,网上的文档一堆一堆的重复,大家随便找篇就行。
 
想看Web应用的,参看:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(Java 功能篇) Java Proxool 的相关文章

随机推荐

  • 数据库系统概论-数据库恢复技术

    1 事务的概念及其特性 恢复技术能保证事务的哪些特性 事务是用户定义的一个数据库操作序列 这些操作要么全做 要么全不做 是一个不可分割的工作单位 事务具有4个特性 原子性 Atomicity 一致性 Consistency 隔离性 Isol
  • Java6.0中Comparable接口与Comparator接口详解 下

    Part IV 说到现在 读者应该对Comparable接口有了大概的了解 但是为什么又要有一个Comparator接口呢 难道Java的开发者都吃饱撑着没事做吗 再谈Comparator接口之前 大家应该先了解一个叫 策略模式 的东东 一
  • WIN10操作系统 Visual Studio 2017 C# ASP.net Web 简单接口+MySQL数据库+NPOI导出到EXCEL开发、发布及部署到局域网详细教程(一)

    本文利用Visual Studio 2017 C 编写一个简单的WEB程序发布和部署到局域网内 目的是实现 在局域网内任意一台未安装OFFICE办公软件的电脑上打开浏览器后在地址栏输入IP地址和端口号 即可链接到WEB网页 点击 导出到EX
  • Linux 镜像文件ISO下载

    Linux 镜像文件ISO下载地址 http archive kernel org centos vault 7 5 1804 isos x86 64 选择 CentOS 7 x86 64 Minimal 1804 iso 下载就OK 下载
  • 华为机试题81-字符串字符匹配

    描述 判断短字符串S中的所有字符是否在长字符串T中全部出现 请注意本题有多组样例输入 数据范围 1 len S len T 200 进阶 时间复杂度 O n 空间复杂度 O n 输入描述 输入两个字符串 第一个为短字符串 第二个为长字符串
  • 登录工程二:现代 Web 应用的典型身份验证需求

    朋友就职于某大型互联网公司 前不久 在闲聊间我问他日常工作的内容 他说他所在部门只负责一件事 即用户与登录 而他的具体工作则是为各个业务子网站提供友好的登录部件 Widget 从而统一整个网站群的登录体验 同时也能令业务开发者不用花费额外的
  • 解决MySQL版本与JDBC驱动版本不对应导致的错误

    我的MySQL版本是5 7 21的 对应的JDBC驱动应该是mysql connector java 5 1 46 bin jar 如果使用低版本的驱动 就会出现如下错误 HTTP Status 500 javax servlet Serv
  • .exe已停止工作_R027---Uipath调用python程序的exe

    一 缘起 看到不少朋友问Uipath调用python的方法 这里说一个方法 调用python程序编译后的exe 其他开发语言的程序也可以这么调用 由于调用的是exe文件 所以 其实没有用到UiPath Python Activities 用
  • Ubuntu常用命令大全

    转自 https www jb51 net os Ubuntu 56362 html 一 文件 文件夹管理 ls 列出当前目录文件 不包括隐含文件 ls a 列出当前目录文件 包括隐含文件 ls l 列出当前目录下文件的详细信息 cd 回当
  • 层次分析法的理解

    AHP 层次分析法 层次分析法的特点 基本概念 重要性表 判断矩阵 为什么要引入判断矩阵呢 判断矩阵的特点 一致矩阵 为什么要定义一致矩阵呢 一致矩阵的特点 一致矩阵的引理 一致性检验的步骤 判断矩阵计算权重 算术平均法求权重 几何平均法
  • 一个很好用的小控件----给所有view右上角添加数字(类似未读消息之类的)

    下面这种效果 Badge 用法很简但 见下面的demo Created by Fangchao on 2015 2 25 EActivity R layout activity usercenter public class UserCen
  • 软件测试及原则

    软件测试 英语 software testing 描述一种用来促进鉴定软件的正确性 完整性 安全性和质量的过程 换句话说 软件测试是一种实际输出与预期输出间的审核或者比较过程 软件测试的经典定义是 在规定的条件下对程序进行操作 以发现程序错
  • 几种压缩算法

    一 行程长度压缩 原理是将一扫描行中的颜色值相同的相邻像素用一个计数值和那些像素的颜色值来代替 例如 aaabccccccddeee 则可用3a1b6c2d3e来代替 对于拥有大面积 相同颜色区域的图像 用RLE压缩方法非常有效 由RLE原
  • Java多线程:线程8锁案例分析

    线程8锁案例分析 通过分析代码 推测打印结果 并运行代码进行验证 1 两个线程调用同一个对象的两个同步方法 被synchronized修饰的方法 锁的对象是方法的调用者 因为两个方法的调用者是同一个 所以两个方法用的是同一个锁 先调用方法的
  • 编译filament

    从github上下载github 每次都被中断 于是灵机一动 从码云上下载1 8下载 果然速度快 先cmake 发现需要python 把enable java去掉 编译后试试 hellopbr
  • nginx系统学习5--常用配置4--防盗链配置

    6 4 防盗链配置 6 4 1 操作 01 配置 server listen 7000 server name www test com www test1 com root html www test location index tes
  • PTA数组2

    目录 1 方阵对角线元素求和及计数 2 使用选择法升序 3 输入10个正整数到a数组中 对a 10 数组中的素数升序排序 4 对a 10 数组中的素数排序 1 方阵对角线元素求和及计数 对输入的一个N N的方阵 求其两条对角线上的元素之和及
  • Excel根据身份证号提取省份

    身份证号码各位的含义 1 2位省 自治区 直辖市代码 3 4位地级市 盟 自治州代码 5 6位县 县级市 区代码 7 14位出生年月日 比如19670401代表1967年4月1日 15 17位为顺序号 其中17位 倒数第二位 男为单数 女为
  • 关于多线程的爬取心得和用法

    最近爬取一些学习上所要用到的东西 因为要搞得东西比较多 写的爬取的速度大大下降 于是我就尝试提升以下程序爬取的速度 正好学过多线程 灵机一动就搞了个多线程的程序爬取 此次没有啥好说的 有啥不懂请看注释 import queue import
  • (Java 功能篇) Java Proxool

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