0

在播放框架重新编译我的代码后,我在重新创建 C3P0 连接时遇到了问题;我必须手动停止服务器并重新启动。起初我认为这是因为我无法为同一个数据库实例创建 2 个数据源,但是销毁数据源并没有帮助,我尝试连续两次初始化我的 CP30 数据源仍然有效。

这是我的初始化代码:

cpds = new ComboPooledDataSource();
cpds.setDriverClass(m_driverClass);
cpds.setUser(m_userName);
cpds.setPassword(m_password);

cpds.setMinPoolSize(5);
cpds.setAcquireIncrement(5);
cpds.setMaxPoolSize(20);

cpds.setJdbcUrl(m_jdbcUrl);
checkIfDBExists();              
cpds.setJdbcUrl(m_jdbcUrl + ";databaseName=" + m_dbName);

这是我的销毁代码:

 if (cpds != null) {
    cpds.resetPoolManager();
    cpds.close();
    DataSources.destroy(cpds);
}

我的代码只是调用初始化,它会尝试在初始化中销毁()。它还使用元数据检查数据库是否已初始化:

try {
    conn = getConnection();
    resultSet = conn.getMetaData().getCatalogs();
    conn.commit();
} finally {
    if (conn != null) conn.close();
}

此 getConnection()(只需调用 cpds.getConnection())在重新启动时会卡住,并且错误消息说它无法从底层数据库获取连接。

有谁知道问题是什么?

4

0 回答 0