Mat*_*ari 5 java database firebird hibernate connection-pooling
我有一个 Web 应用程序,当前使用 c3p0 和 Hibernate 连接到 Firebird 1.5 数据库。
我时不时地遇到一个问题,数据库停止响应,即使尝试手动重新启动服务也没有任何效果,并且它不会生成任何日志,所以我必须手动重新启动机器才能得到它再次工作。
我认为当池尝试获取特定数量的连接或类似的东西时,Firebird 可能会挂起。因此,我需要在没有连接池的情况下测试我的应用程序,以检查这是否是问题所在。
我不能简单地从持久性中删除 c3p0 配置,因为这样 Hibernate 将使用它自己的集成连接池。那么该怎么做呢?
最灵活的解决方案是使用显式 DataSource,而不是通过 Hibernate 配置连接池。配置非池化的一种选择DataSource是使用DriverManagerDataSource:
@Override
protected Properties getProperties() {
Properties properties = new Properties();
properties.put("hibernate.dialect", "org.hibernate.dialect.HSQLDialect");
//log settings
properties.put("hibernate.hbm2ddl.auto", "update");
//data source settings
properties.put("hibernate.connection.datasource", newDataSource());
return properties;
}
protected ProxyDataSource newDataSource() {
DriverManagerDataSource actualDataSource = new DriverManagerDataSource();
actualDataSource.setUrl("jdbc:hsqldb:mem:test");
actualDataSource.setUsername("sa");
actualDataSource.setPassword("");
ProxyDataSource proxyDataSource = new ProxyDataSource();
proxyDataSource.setDataSource(actualDataSource);
proxyDataSource.setListener(new SLF4JQueryLoggingListener());
return proxyDataSource;
}
Run Code Online (Sandbox Code Playgroud)
这样你就可以选择池化或非池化DataSource。
为了更好地了解连接池资源的使用情况,您可以配置FlexyPool来收集以下指标:
| 归档时间: |
|
| 查看次数: |
6005 次 |
| 最近记录: |