`
hxj1225
  • 浏览: 7947 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

我用proxool做连接池的时候出现异常

阅读更多
错误信息
2008-1-24 11:46:04 org.logicalcobwebs.proxool.ProxoolFacade registerConnectionPool
信息: Proxool 0.9.0RC3 (10-Jan-2007 01:38)
2008-1-24 11:46:04 org.logicalcobwebs.proxool.ProxoolDriver connect
严重: Problem
org.logicalcobwebs.proxool.ProxoolException: Attempt to refer to a unregistered pool by its alias 'DBPool'
    at org.logicalcobwebs.proxool.ConnectionPoolDefinition.doChange(ConnectionPoolDefinition.java:250)
    at org.logicalcobwebs.proxool.ConnectionPoolDefinition.<init>(ConnectionPoolDefinition.java:147)
    at org.logicalcobwebs.proxool.ProxoolFacade.registerConnectionPool(ProxoolFacade.java:96)
    at org.logicalcobwebs.proxool.ProxoolDriver.connect(ProxoolDriver.java:77)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at selfservice.PoolManager.getConnection(PoolManager.java:30)
    at selfservice.PoolManager.getQuery(PoolManager.java:99)
    at selfservice.PoolManager.main(PoolManager.java:121)
java.sql.SQLException: org.logicalcobwebs.proxool.ProxoolException: Attempt to refer to a unregistered pool by its alias 'DBPool'
    at org.logicalcobwebs.proxool.ProxoolDriver.connect(ProxoolDriver.java:109)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at selfservice.PoolManager.getConnection(PoolManager.java:30)
    at selfservice.PoolManager.getQuery(PoolManager.java:99)
    at selfservice.PoolManager.main(PoolManager.java:121)



web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <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>


proxool.xml
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
    <proxool>
        <alias>DBPool</alias>
        <driver-url>
            jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=test
        </driver-url>
        <driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>
        <driver-properties>
            <property name="user" value="sa" />
            <property name="password" value="1" />
        </driver-properties>
        <house-keeping-sleep-time>90000</house-keeping-sleep-time>
        <maximum-new-connections>150</maximum-new-connections>
        <prototype-count>3</prototype-count>
        <maximum-connection-count>100</maximum-connection-count>
        <minimum-connection-count>3</minimum-connection-count>
    </proxool>
</something-else-entirely>


类文件
package selfservice;

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

import org.logicalcobwebs.proxool.ProxoolException;
import org.logicalcobwebs.proxool.ProxoolFacade;
import org.logicalcobwebs.proxool.admin.SnapshotIF;

public class PoolManager {

    private static int activeCount = 0;

    public PoolManager() {

    }

    /**
     * 获取连接 getConnection
     * 
     * @param name
     * @return
     */
    public Connection getConnection() {
        try {
            Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");// proxool驱动类
            Connection conn = DriverManager.getConnection("proxool.DBPool");
            // 此处的DBPool是在proxool.xml中配置的连接池别名
            showSnapshotInfo();

            return conn;
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return null;
    }

    /**
     * 此方法可以得到连接池的信息 showSnapshotInfo
     */
    private void showSnapshotInfo() {
        try {
            SnapshotIF snapshot = ProxoolFacade.getSnapshot("DBPool", true);
            int curActiveCount = snapshot.getActiveConnectionCount();// 获得活动连接数
            int availableCount = snapshot.getAvailableConnectionCount();// 获得可得到的连接数
            int maxCount = snapshot.getMaximumConnectionCount();// 获得总连接数
            if (curActiveCount != activeCount)// 当活动连接数变化时输出的信息
            {
                System.out.println("活动连接数:" + curActiveCount
                        + "(active)  可得到的连接数:" + availableCount
                        + "(available)  总连接数:" + maxCount + "(max)");
                activeCount = curActiveCount;
            }
        } catch (ProxoolException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取连接 getConnection
     * 
     * @param name
     * @return
     */
    public Connection getConnection(String name) {
        return getConnection();
    }

    /**
     * 释放连接 freeConnection
     * 
     * @param conn
     */
    public void freeConnection(Connection conn) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 释放连接 freeConnection
     * 
     * @param name
     * @param con
     */
    public void freeConnection(String name, Connection con) {
        freeConnection(con);
    }

    public void getQuery() {
        try {
            Connection conn = getConnection();
            if (conn != null) {
                Statement statement = conn.createStatement();
                ResultSet rs = statement
                        .executeQuery("select * from t_emp");
                int c = rs.getMetaData().getColumnCount();
                while (rs.next()) {
                    System.out.println();
                    for (int i = 1; i <= c; i++) {
                        System.out.print(rs.getObject(i));
                    }
                }
                rs.close();
            }
            freeConnection(conn);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        PoolManager manager = new PoolManager();
        manager.getQuery();
    }
}



这样写有什么问题吗?我弄不明白为什么会出错,难道是还要配置什么吗?
分享到:
评论
9 楼 marsjin 2008-10-09  
你查看一下是否在初始化连接池之前使用了连接池呢?
可以用连接池的检测代码看一下是否成功创建连接池
8 楼 wt8414 2008-07-16  
你这很明显是直接运行PoolManager.main
7 楼 zhuyx808 2008-07-11  
Attempt to refer to a unregistered pool by its alias

这里说的很明确了
6 楼 FAT0708 2008-06-23  
用web调用,就是用servlet或jsp。
5 楼 zphab 2008-06-23  
icefire 写道
楼主难道是直接运行的PoolManager.main???????


如果是直接运行main方法,那肯定是获取不了连接的,因为web.xml和proxool.xml文件都没有加载。
4 楼 icefire 2008-05-05  
楼主难道是直接运行的PoolManager.main???????
3 楼 tigerbrother 2008-05-05  
Note that when using this xml solution, you must download a JAXP compliant XML parser. Here I will use Xerces, download the zip file, unzip it and put all jar files into your web application’s WEB-INF/lib directory.

可以看看这个链接,对你可能有启发。
http://www.memezilla.com/2005/05/18/proxool-in-practice
2 楼 tigerbrother 2008-05-05  
我看了你的帖子感觉配置都正确。建议用以下方法来排错:
首先修改web.xml, 不要用proxool.xml,
试用一下proxool.properties

<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/proxool.properties</param-value>
        </init-param>
  </servlet>


proxool.properties 文件内容

jdbc-0.proxool.alias=conn1
jdbc-0.proxool.driver-class=com.mysql.jdbc.Driver
jdbc-0.proxool.driver-url=jdbc:mysql://localhost:3306/myContent
jdbc-0.user=HaoLing
jdbc-0.password=HL



jdbc-0.proxool.maximum-connection-count=40
jdbc-0.proxool.prototype-count=4



jdbc-0.proxool.house-keeping-test-sql=select CURRENT_DATE
jdbc-0.proxool.verbose=true
jdbc-0.proxool.statistics=10s,1m,1d
jdbc-0.proxool.statistics-log-level=DEBUG

如果还是出错,请仔细检查你的web.xml,肯定是格式错误,无法找到ServletConfigurator.

因为我不太上论坛的,如果还是不行,可以给我发邮件联系  shihao888@gmail.com

1 楼 hxj1225 2008-01-24  
没有人知道吗?

相关推荐

    proxool连接池jar包

    在实际应用中,使用Proxool连接池的步骤通常包括: 1. 添加依赖:将这两个jar文件添加到项目的类路径中。 2. 配置Proxool:创建XML配置文件,定义数据库连接的相关参数,如URL、用户名、密码以及池的大小等。 3. ...

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

    当遇到“使用proxool连接Sybase时处理事务的问题”,这通常涉及到事务的隔离级别、事务的自动提交状态以及事务控制语句(如BEGIN、COMMIT、ROLLBACK)的正确使用。 事务处理是数据库操作的核心部分,确保数据的一致...

    proxool_0.9.1

    标签“java 数据库连接池 proxool 中文乱码”揭示了这个包特别适用于解决在Java环境下使用Proxool时可能出现的中文乱码问题。在数据库操作中,如果处理中文字符不当,可能会导致乱码。Proxool的这个版本可能已经针对...

    proxool-0.9.1.jar

    在实际使用中,开发者通常会在项目构建工具(如Maven或Gradle)的依赖管理中引入"proxool-0.9.1.jar",然后通过编程接口或者DataSource配置来初始化和使用Proxool连接池。在代码中,可以使用Proxool提供的API来获取...

    DBCP数据库连接池

    在实际应用中,DBCP常与C3P0、Proxool等其他连接池技术并存使用。 #### 二、DBCP配置详解 在交通银行项目文档中提到了对DBCP连接池的一些关键配置项: 1. **initialSize**: 连接池启动时创建的初始化连接数量,...

    hibernate4.1.4中hibernate+Proxool无法实现加载Proxool的配置文件解决办法及jar包

    1. **配置文件错误**:检查`hibernate.cfg.xml`,确保配置了正确的Proxool连接池配置。例如: ```xml &lt;property name="hibernate.connection.provider_class"&gt;org.hibernate.connection.ProxoolConnectionProvider ...

    proxool-bug_fix

    标题中的"proxool-bug_fix"表明这是一个关于Proxool的修复补丁或更新版本,主要目的是解决Proxool在使用过程中出现的问题。Proxool是Apache软件基金会的一个开源项目,它是一个数据库连接池(Connection Pool)实现...

    R2高性能数据库连接池v1.7源码

    v1.2处理了oracle环境下由于服务器关闭休眠链接造成的连接池循环检测进程异常退出的情况,改为当循环周期大于服务器关闭休眠链接间隔时,后台打印异常并重新连接数据库。 R2 jdbc连接池,用于java程序中jdbc连接池的...

    R2高性能数据库连接池v1.6源码

    v1.2处理了oracle环境下由于服务器关闭休眠链接造成的连接池循环检测进程异常退出的情况,改为当循环周期大于服务器关闭休眠链接间隔时,后台打印异常并重新连接数据库。 R2 jdbc连接池,用于java程序中jdbc连接池...

    R2高性能数据库连接池v1.8源码

    v1.2处理了oracle环境下由于服务器关闭休眠链接造成的连接池循环检测进程异常退出的情况,改为当循环周期大于服务器关闭休眠链接间隔时,后台打印异常并重新连接数据库。 R2 jdbc连接池,用于java程序中jdbc连接池的...

    R2高性能数据库连接池v1.8改进版源码

    v1.2处理了oracle环境下由于服务器关闭休眠链接造成的连接池循环检测进程异常退出的情况,改为当循环周期大于服务器关闭休眠链接间隔时,后台打印异常并重新连接数据库。 R2 jdbc连接池,用于java程序中jdbc连接池的...

    jedis工具类

    这个工具类的主要目的是在程序运行时自动读取配置文件(例如`redis.properties`),并根据配置创建和管理Redis连接池,类似于proxool这样的数据库连接池管理工具。 首先,让我们了解一下`Jedis`。Jedis是Java语言的...

    解决mysql出现大量TIME_WAIT

    本文将深入解析如何有效解决MySQL出现大量TIME_WAIT状态的问题,通过调整系统内核参数、优化数据库配置以及合理管理连接池策略,确保服务器性能的稳定与高效。 ### 一、理解TIME_WAIT TIME_WAIT是TCP协议中的一个...

Global site tag (gtag.js) - Google Analytics