Play重新编译后重新初始化C3P0连接到DB

时间:2013-07-23 15:36:23

标签: jdbc playframework c3p0

在播放框架重新编译我的代码后,我一直在重新创建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())在重新启动时会卡住,并且错误消息显示它无法从底层数据库获取连接。

有没有人有任何想法是什么问题?

0 个答案:

没有答案