我在我的應用程序中使用了pooledDataSources。 Mbean的ObjectName爲PooledDataSource包含可變部分。例如:如何獲得c3p0 mbeans對象的固定對象名稱
的ObjectName = com.mchange.v2.c3p0:類型= 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>
感謝
感謝您的解決方案。我在我的bean中設置dataSourceName屬性,並設置System.setProperty(「com.mchange.v2.c3p0.management.ExcludeIdentityToken」,「true」);但是mbean objectName仍然與vmid一起發佈。我試着將屬性'com.mchange.v2.c3p0.VMID'也設置爲NONE,但也沒有運氣。但在升級c3p0版本後,m現在至少能夠設置所有這些屬性。 – sasuke
嗨。不要打擾VMID的東西。那不會幫助你。使用System.setProperty(...)將是非常脆弱的,因爲這是否有效取決於您的調用順序與c3p0配置類的加載。如果要在系統屬性中設置c3p0 config,最好在VM啓動時使用-D = 。實際上,最好製作一個c3p0.properties文件並放在那裏(除非你已經在使用typesafe-config,在這種情況下使用它)。如果這很簡單,我很抱歉;我正在寫電話。 –
非常感謝史蒂夫:) – sasuke