java - Eclipselink:如何检查是否使用了连接池

标签 java jpa eclipselink

我使用 eclipselink 2.6.3,我需要确切地知道连接池是否由 Eclipselink 创建和使用。

如果persistence.xml我有如下设置

<property name="eclipselink.connection-pool.default.initial" value="5" />
<property name="eclipselink.connection-pool.default.min" value="10" />
<property name="eclipselink.connection-pool.default.max" value="10" />
<property name="eclipselink.jdbc.cache-statements" value="true" />

但是,这两种情况的日志是相同的 - 当我使用这些设置时和当我不使用这些设置时:

[EL Finer]: connection: 2017-01-22 19:39:03.208--ServerSession(1440738283)--client acquired: 1177072083
[EL Finer]: transaction: 2017-01-22 19:39:03.218--ClientSession(1177072083)--acquire unit of work: 1482166692
[EL Finest]: query: 2017-01-22 19:39:03.239--UnitOfWork(1482166692)--Execute query ReadObjectQuery(...)
[EL Finest]: connection: 2017-01-22 19:39:03.243--ServerSession(1440738283)--Connection(2008547236)--Connection acquired from connection pool [read].
[EL Finest]: connection: 2017-01-22 19:39:03.243--ServerSession(1440738283)--reconnecting to external connection pool
[EL Fine]: sql: 2017-01-22 19:39:03.244--ServerSession(1440738283)--Connection(1590792382)-- SELECT ...
[EL Finest]: connection: 2017-01-22 19:39:03.25--ServerSession(1440738283)--Connection(2008547236)--Connection released to connection pool [read].
[EL Finer]: transaction: 2017-01-22 19:39:03.257--UnitOfWork(1482166692)--release unit of work
[EL Finer]: connection: 2017-01-22 19:39:03.257--ClientSession(1177072083)--client released

谁能说说如何检查连接池的使用。

最佳答案

EclipseLink 可以在两种模式下运行。当您像您所做的那样提供 JDBC URL 和池属性时,EclipseLInk 将创建和管理连接池。池的实现是 org.eclipse.persistence.sessions.server.ConnectionPool。另一种方法是通过 JNDI 引用或以编程方式提供数据源。第二种选择常用于应用程序服务器,其中服务器将管理连接池,而 EclipseLink 会在需要新连接时询问数据源。

如果你想检查连接是否在池中,你很可能必须从数据库端进行。所有数据库都允许您查看连接列表及其 ID,以及它们当前正在执行的查询。这应该允许您查看连接是否被合并,或者是否不断创建新连接。您还可以在 org.eclipse.persistence.sessions.server.ConnectionPool#acquireConnection() 中设置断点并单步执行代码。

关于java - Eclipselink:如何检查是否使用了连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41793544/

相关文章:

java - java中如何比较数组的特定元素

Mac 上的 Java 7 和 JavaVM.framework

java - 如何让我的代码找出在合理的时间内按下了哪个按钮?

java - 在带 Hibernate 的 JPA 2 中强制传递持久性顺序?

java - JPA:从属性创建 EntityManagerFactory

java - 持久化无法识别实体类

java - 如何将UTF8字符串转换为UTF16

java - 如何使我的 sql 数据可用于 Junit 中的所有新事务?

java - 从 JPA 2.1 升级到 JPA 2.2

java - 如何启用 Weblogic 12.1.2 JPA 2.1