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

时间:2017-01-22 16:47:15

标签: 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

有人可以说如何检查连接池的使用情况。

1 个答案:

答案 0 :(得分:2)

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

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