在播放框架重新编译我的代码后,我在重新创建 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())在重新启动时会卡住,并且错误消息说它无法从底层数据库获取连接。
有谁知道问题是什么?