我使用 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/