在播放框架重新编译我的代码后,我一直在重新创建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);
}
我的代码只调用initialize,并尝试在initialize中销毁()。它还使用元数据检查数据库是否已初始化:
try {
conn = getConnection();
resultSet = conn.getMetaData().getCatalogs();
conn.commit();
} finally {
if (conn != null) conn.close();
}
这个getConnection()(简单地调用cpds.getConnection())在重新启动时会卡住,并且错误消息显示它无法从底层数据库获取连接。
有没有人有任何想法是什么问题?