首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Atomikos、Java 8和多个数据库

Atomikos、Java 8和多个数据库
EN

Stack Overflow用户
提问于 2016-07-21 21:01:22
回答 1查看 1.2K关注 0票数 1

我们有一个应用程序已经在Java 7上运行了几年,但是升级到Java 8有问题。数据库连接似乎是问题所在。

情况就是这样:应用程序访问200多个数据库。或者,在技术上,一个数据库安装上有200个不同的模式。我们使用Atomikos作为数据源。使用Java 7启动应用程序时,可能会对数据源进行顺序迭代,因为我们已经将最大池大小设置为5,这需要一些时间,但实际上没有问题。

当我们尝试使用Java 8运行时,我的猜测是它试图并行地完成所有事情。应用程序在启动时崩溃,如下所示:

05:21:39.611 INFO主o.s.o.j.LocalContainerEntityManagerFactoryBean -为持久化单元构建JPA容器EntityManagerFactory 'database.np‘05:21:41.389 INFO主o.s.o.j.LocalContainerEntityManagerFactoryBean -构建用于持久性单元的JPA容器EntityManagerFactory’database.np_000000000_0000:21:41.796 INFO主o.s.o.j.LocalContainerEntityManagerFactoryBean -为持久化单元构建JPA容器EntityManagerFactory 'database.np_000000001_0000‘05:22:11.890c.atomikos.jdbc.AtomikosSQLException -连接池耗尽-尝试在DataSourceBean上增加'maxPoolSize‘和/或'borrowConnectionTimeout’。05:22:41.991警告主c.atomikos.jdbc.AtomikosSQLException -连接池耗尽-尝试在DataSourceBean上增加'maxPoolSize‘和/或'borrowConnectionTimeout’。05:22:41.998错误主o.h.tool.hbm2ddl.SchemaValidator - HHH000319:无法获得数据库元数据com.atomikos.jdbc.AtomikosSQLException:连接池耗尽-尝试在DataSourceBean上增加'maxPoolSize‘和/或'borrowConnectionTimeout’。在com.atomikos.jdbc.AtomikosSQLException.throwAtomikosSQLException(AtomikosSQLException.java:46) ~事务-jdbc-3.9.3.jar:na在com.atomikos.jdbc.AbstractDataSourceBean.throwAtomikosSQLException(AbstractDataSourceBean.java:90) ~事务-jdbc-3.9.3.jar:na在com.atomikos.jdbc.AbstractDataSourceBean.throwAtomikosSQLException(AbstractDataSourceBean.java:85) ~事务-jdbc-3.9.3.jar:na 因此,我们尝试在堆栈跟踪中提出建议,并将maxPoolSize提高到200以上的适当数量。然后我们就可以开始申请了但是..。这似乎是一个完全的过度,更糟糕的是,应用程序不喜欢有那么多它没有真正使用的连接--数据库/模式只是偶尔被访问。我们在日志中看到了以下内容: 11:08:26.970 Atomikos:0 c.a.datasource.pool.ConnectionPool - atomikos连接池'dataSourceNp':连接空闲为358671ms 11:08:26.970 Atomikos:0调试c.a.datasource.pool.ConnectionPool -原子库连接池'dataSourceNp':连接空闲为357953ms 11:08:26.970 Atomikos:0调试c.a.datasource.pool.ConnectionPool 'dataSourceNp':连接357947ms 11:08:26.970 Atomikos:0调试c.a.datasource.pool.ConnectionPool - atomikos连接池'dataSourceNp':26425ms连接空闲11:08:26.970 Atomikos:0调试c.a.datasource.pool.ConnectionPool -原子库连接池'dataSourceNp':当前大小: 1/4 11:08:29.983 Atomikos:1 DEBUG c.a.datasource.pool.ConnectionPool -原子库连接池'dataSourceRolp':尝试收缩池11:08:29.984 atomikos :调试c.a.datasource.pool.ConnectionPool -原子源连接池'dataSourceRolp':空闲连接359790ms\x{e76f}\x{e76f}(重复200次)\x{e76f}\x{e76f} 'dataSourceRolp':263450ms 11:07:29.983 atomikos连接池'dataSourceRolp':一个调试空闲连接池'dataSourceRolp':连接空闲为263446ms 11:29.983:29.983 atomikos连接池'dataSourceRolp':为263168ms连接空闲连接:07:29.983 c.a.datasource.pool.ConnectionPool :1调试c.a.datasource.pool.ConnectionPool -原子源pool连接池:当前大小: 1/208

有什么想法吗?出于法律原因,我们需要将200+模式分开。除此之外,我们可以自由选择我们想要的技术解决方案。

EN

回答 1

Stack Overflow用户

发布于 2017-08-10 19:22:25

你用的是什么数据库?在数据库迁移过程中(从Oracle迁移到PostgreSQL),我遇到了一个类似的问题。

我们将数据源定义为JNDI,为了使数据源,我们还从jdbc拦截器中删除了一些属性。

如果您正在使用PostgreSQL,也请检查您为数据源定义的bean类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38514291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档