我有一个Web应用程序,目前使用C3P0和Hibernate连接到Firebird 1.5数据库。
我不时遇到问题,数据库只是停止响应,即使尝试手动重启服务也没有任何效果,并且它不会生成任何日志,所以我必须手动重新启动机器让它再次运作。
我认为当池试图获取特定数量的连接或类似的东西时,firebird可能会挂起。所以我需要测试我的应用程序没有连接池,以检查这是否是问题。
我不能简单地从持久性中删除C3P0配置,因为这样hibernate会使用它自己的集成连接池。那怎么办呢?
答案 0 :(得分:0)
最灵活的解决方案是使用an explicit 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;
}
通过这种方式,您可以选择合并或非合并DataSource
。
为了更好地了解您的连接池资源使用情况,您可以配置FlexyPool来收集以下指标:
答案 1 :(得分:0)