如何获取 c3p0 mbeans 对象的固定对象名称
How to get fixed object name for c3p0 mbeans object
我在我的应用程序中使用 pooledDataSources。 PooledDataSource 的 Mbean 的 ObjectName 包含可变部分。例如:
ObjectName = com.mchange.v2.c3p0:type=PooledDataSource[z8kfsx9c4bily2r1i962|23696a1b]
变量为 z8kfsx9c4bily2r1i962|23696a1b,每次我重新启动服务时它都会改变。为了监控目的,我必须为我的 mbean 获取固定的 ObjectName。我正在使用 jmx 进行监控。我试图覆盖 vmid 属性,但它似乎不可写 属性。对此做了很多研究,但 运行 运气不好。
我的Jmx配置如下:
<jmxtrans-agent>
<queries>
<!-- C3P0 -->
<query objectName="com.mchange.v2.c3p0:type=PooledDataSource" attribute="threadPoolNumTasksPending" resultAlias="cp.threadPoolNumTasksPending"/>
</queries>
</jmxtrans-agent>
提前致谢
默认情况下,c3p0 JMX 名称如下所示:
com.mchange.v2.c3p0:type=PooledDataSource,identityToken=<variable, opaque token>
为了获得常量标识符,必须设置确保 属性 dataSourceName
已设置。最好的方法是在构建时给你的 DataSource
一个名字:
ComboPooledDataSource cpds = new ComboPooledDataSource("Jojo")
但您也可以像任何其他 c3p0 配置一样设置 dataSourceName
属性。
然后您将拥有如下所示的 JMX 名称:
com.mchange.v2.c3p0:type=PooledDataSource,identityToken=<variable, opaque token>,name=Jojo
许多 JMX 客户端允许您搜索属性,因此这足以为您提供永久监视器。
如果你真的需要一个常量的、固定的、JMX 名称,你可以设置 属性
com.mchange.v2.c3p0.management.ExcludeIdentityToken=true
这可以放在 c3p0.properties
文件中,作为系统 属性,或作为 HOCON/typesafe 配置路径,具体取决于您配置 c3p0 的方式。如果您设置此 属性 并且 还设置 dataSourceName
(同样,通过构造函数或在您的配置中),那么您的 JMX 名称将是一个可预测的固定字符串, 喜欢
com.mchange.v2.c3p0:type=PooledDataSource,name=Jojo
由您来确保这些名称是唯一的。
注意:com.mchange.v2.c3p0.management.ExcludeIdentityToken=true
是一个新功能,请确保您使用的是最新的 c3p0-0.9.5.1
有关详细信息,请参阅 c3p0 的 JMX configuration docs。
我在我的应用程序中使用 pooledDataSources。 PooledDataSource 的 Mbean 的 ObjectName 包含可变部分。例如:
ObjectName = com.mchange.v2.c3p0:type=PooledDataSource[z8kfsx9c4bily2r1i962|23696a1b]
变量为 z8kfsx9c4bily2r1i962|23696a1b,每次我重新启动服务时它都会改变。为了监控目的,我必须为我的 mbean 获取固定的 ObjectName。我正在使用 jmx 进行监控。我试图覆盖 vmid 属性,但它似乎不可写 属性。对此做了很多研究,但 运行 运气不好。
我的Jmx配置如下:
<jmxtrans-agent>
<queries>
<!-- C3P0 -->
<query objectName="com.mchange.v2.c3p0:type=PooledDataSource" attribute="threadPoolNumTasksPending" resultAlias="cp.threadPoolNumTasksPending"/>
</queries>
</jmxtrans-agent>
提前致谢
默认情况下,c3p0 JMX 名称如下所示:
com.mchange.v2.c3p0:type=PooledDataSource,identityToken=<variable, opaque token>
为了获得常量标识符,必须设置确保 属性 dataSourceName
已设置。最好的方法是在构建时给你的 DataSource
一个名字:
ComboPooledDataSource cpds = new ComboPooledDataSource("Jojo")
但您也可以像任何其他 c3p0 配置一样设置 dataSourceName
属性。
然后您将拥有如下所示的 JMX 名称:
com.mchange.v2.c3p0:type=PooledDataSource,identityToken=<variable, opaque token>,name=Jojo
许多 JMX 客户端允许您搜索属性,因此这足以为您提供永久监视器。
如果你真的需要一个常量的、固定的、JMX 名称,你可以设置 属性
com.mchange.v2.c3p0.management.ExcludeIdentityToken=true
这可以放在 c3p0.properties
文件中,作为系统 属性,或作为 HOCON/typesafe 配置路径,具体取决于您配置 c3p0 的方式。如果您设置此 属性 并且 还设置 dataSourceName
(同样,通过构造函数或在您的配置中),那么您的 JMX 名称将是一个可预测的固定字符串, 喜欢
com.mchange.v2.c3p0:type=PooledDataSource,name=Jojo
由您来确保这些名称是唯一的。
注意:com.mchange.v2.c3p0.management.ExcludeIdentityToken=true
是一个新功能,请确保您使用的是最新的 c3p0-0.9.5.1
有关详细信息,请参阅 c3p0 的 JMX configuration docs。