Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate AtomikosSQLException:连接池耗尽-每当应用程序引发异常时,连接就会耗尽_Hibernate_Spring Data Jpa_Jta_Distributed Transactions_Atomikos - Fatal编程技术网

Hibernate AtomikosSQLException:连接池耗尽-每当应用程序引发异常时,连接就会耗尽

Hibernate AtomikosSQLException:连接池耗尽-每当应用程序引发异常时,连接就会耗尽,hibernate,spring-data-jpa,jta,distributed-transactions,atomikos,Hibernate,Spring Data Jpa,Jta,Distributed Transactions,Atomikos,在我的SpringMVC应用程序中,我将Atomikos事务API(v3.9.3)与JPA(Hibernate作为供应商)一起使用。我有两个实体管理器连接到两个数据源。下面提供了其中一个数据源的配置。 我面临的一个问题是,每当我的应用程序抛出异常时,连接就会耗尽,无法获得。当所有连接都从池中耗尽时,我最终得到了AtomikosSQLException:连接池耗尽。任何人都可以帮助我的配置中缺少什么吗? 在实现此功能的过程中,我关注了以下博客: 这是我的数据源配置: @Bean(name = "

在我的SpringMVC应用程序中,我将Atomikos事务API(v3.9.3)与JPA(Hibernate作为供应商)一起使用。我有两个实体管理器连接到两个数据源。下面提供了其中一个数据源的配置。 我面临的一个问题是,每当我的应用程序抛出异常时,连接就会耗尽,无法获得。当所有连接都从池中耗尽时,我最终得到了AtomikosSQLException:连接池耗尽。任何人都可以帮助我的配置中缺少什么吗? 在实现此功能的过程中,我关注了以下博客:

这是我的数据源配置:

@Bean(name = "masterDataSource", initMethod = "init", destroyMethod = "close")
public DataSource masterDataSource() {
    final MysqlXADataSource mysqlXaDataSource = new MysqlXADataSource();
    mysqlXaDataSource.setUrl(Preconditions.checkNotNull(env.getProperty("dataSource.master.url")));
    mysqlXaDataSource.setPinGlobalTxToPhysicalConnection(true);
    mysqlXaDataSource.setUser(Preconditions.checkNotNull(env.getProperty("dataSource.username")));
    mysqlXaDataSource.setPassword(Preconditions.checkNotNull(env.getProperty("dataSource.password")));

    AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean();
    xaDataSource.setXaDataSource(mysqlXaDataSource);
    xaDataSource.setUniqueResourceName("ds_master");

    return xaDataSource;
}
Unable to acquire JDBC Connection [n/a] 2016-11-11 10:50:58,487com.atomikos.jdbc.AtomikosSQLException: Connection pool exhausted - try increasing 'maxPoolSize' and/or 'borrowConnectionTimeout' on the DataSourceBean.
at com.atomikos.jdbc.AtomikosSQLException.throwAtomikosSQLException(AtomikosSQLException.java:46)
at com.atomikos.jdbc.AbstractDataSourceBean.throwAtomikosSQLException(AbstractDataSourceBean.java:90)
at com.atomikos.jdbc.AbstractDataSourceBean.throwAtomikosSQLException(AbstractDataSourceBean.java:85)
at com.atomikos.jdbc.AbstractDataSourceBean.getConnection(AbstractDataSourceBean.java:347)
at com.atomikos.jdbc.AbstractDataSourceBean.getConnection(AbstractDataSourceBean.java:394)
at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
at org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection(NonContextualJdbcConnectionAccess.java:35)
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:99)
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:129)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.connection(StatementPreparerImpl.java:47)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:146)
这是堆栈跟踪:

@Bean(name = "masterDataSource", initMethod = "init", destroyMethod = "close")
public DataSource masterDataSource() {
    final MysqlXADataSource mysqlXaDataSource = new MysqlXADataSource();
    mysqlXaDataSource.setUrl(Preconditions.checkNotNull(env.getProperty("dataSource.master.url")));
    mysqlXaDataSource.setPinGlobalTxToPhysicalConnection(true);
    mysqlXaDataSource.setUser(Preconditions.checkNotNull(env.getProperty("dataSource.username")));
    mysqlXaDataSource.setPassword(Preconditions.checkNotNull(env.getProperty("dataSource.password")));

    AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean();
    xaDataSource.setXaDataSource(mysqlXaDataSource);
    xaDataSource.setUniqueResourceName("ds_master");

    return xaDataSource;
}
Unable to acquire JDBC Connection [n/a] 2016-11-11 10:50:58,487com.atomikos.jdbc.AtomikosSQLException: Connection pool exhausted - try increasing 'maxPoolSize' and/or 'borrowConnectionTimeout' on the DataSourceBean.
at com.atomikos.jdbc.AtomikosSQLException.throwAtomikosSQLException(AtomikosSQLException.java:46)
at com.atomikos.jdbc.AbstractDataSourceBean.throwAtomikosSQLException(AbstractDataSourceBean.java:90)
at com.atomikos.jdbc.AbstractDataSourceBean.throwAtomikosSQLException(AbstractDataSourceBean.java:85)
at com.atomikos.jdbc.AbstractDataSourceBean.getConnection(AbstractDataSourceBean.java:347)
at com.atomikos.jdbc.AbstractDataSourceBean.getConnection(AbstractDataSourceBean.java:394)
at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
at org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection(NonContextualJdbcConnectionAccess.java:35)
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:99)
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:129)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.connection(StatementPreparerImpl.java:47)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:146)

我也遇到了同样的问题,这似乎是Atomikos上的一个问题,我通过将Atomikos版本升级到4.0.6解决了这个问题。如果您是商业用户,您可以尝试使用

Varenya,您是否能够找到解决此问题的方法?我想我也有同样的问题。我使用的是atomikos 4.0.4、Spring 4.3.2和hibernate 4.3.11。Varenya和kenn3th您解决了这个问题吗?