1

我正在使用一些代码来监视我的 Tomcat (9) 连接池。但是,当我扫描数据源 MBean 时,返回的结果并不一致。有没有人解释为什么会这样?

有时我会得到三个 MBean(数据源 + 连接池 + 连接):

NAME: Catalina:type=DataSource,host=localhost,context=/,class=javax.sql.DataSource,name="jdbc/evote",connectionpool=connections,connection=1
DESC: Information on the management interface of the MBean
CLAS: org.apache.tomcat.dbcp.dbcp2.PoolableConnection

NAME: Catalina:type=DataSource,host=localhost,context=/,class=javax.sql.DataSource,name="jdbc/evote"
DESC: null
CLAS: org.apache.tomcat.util.modeler.BaseModelMBean

NAME: Catalina:type=DataSource,host=localhost,context=/,class=javax.sql.DataSource,name="jdbc/evote",connectionpool=connections
DESC: Information on the management interface of the MBean
CLAS: org.apache.tomcat.dbcp.pool2.impl.GenericObjectPool

但在其他时候,连接池不会出现在扫描中。我只得到一个简单的数据源:

NAME: Catalina:type=DataSource,host=localhost,context=/,class=javax.sql.DataSource,name="jdbc/evote"
DESC: null
CLAS: org.apache.tomcat.util.modeler.BaseModelMBean

为什么连接池 MBean 不总是可用?

4

1 回答 1

1

正如您在评论中注意到的,与连接池对应的 MBean 仅在getConnection第一次调用后创建。

但是,由于Tomcat 9.0.38及更高版本附带的DBCP 2.8.0 ,您对 有一个操作,它允许您在不创建任何连接的情况下创建池。start()BasicDataSourceMXBean

于 2021-02-17T21:02:57.013 回答