1
<?xml version="1.0" encoding="UTF-8"?>
<config
        xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
        xmlns:jsr107='http://www.ehcache.org/v3/jsr107'
        xmlns='http://www.ehcache.org/v3'
        xsi:schemaLocation="
        http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.1.xsd
        http://www.ehcache.org/v3/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.1.xsd">

    <service>
        <jsr107:defaults enable-management="false" enable-statistics="true"/>
    </service>

    <cache alias="mySlidingExpiryJCache">
        <key-type>java.lang.Long</key-type>

        <expiry>
            <tti unit="seconds">2</tti>
        </expiry>
        <resources>
            <heap unit="entries">200</heap>
        </resources>
        <jsr107:mbeans enable-statistics="true"/>
    </cache>
</config>

MBean を抽出して統計を表示したいのですが、ネット上ではプログラムで注入された Bean しか見ることができないため、方法がわかりません (このSOの質問も参照してください)。

StatisticsService statisticsService = new DefaultStatisticsService();
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
        .using(statisticsService)
        .build();
cacheManager.init();

何かアドバイス ?

4

1 に答える 1

2

JSR107/JCache 統計を有効にしました。これらは JMX 経由で利用できます。これらの JMX Bean にプログラムでアクセスしたい場合は、次のようにすることができます。

Cache cache = // a JSR107 cache
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName("javax.cache:type=CacheStatistics," +
  "CacheManager=" + cache.getCacheManager().getURI().toString() +
  ",Cache=" + mbeanSafe(cache.getName()));
long hits = mBeanServer.getAttribute(name, "CacheHits");

JCache のCache作成方法は、質問で行う場合とは異なることに注意してください。ここで詳細なドキュメントを参照してください: https://www.ehcache.org/documentation/3.0/107.html

JSR107/JCache は、多くの Java キャッシュがサポートする標準 API です。また、JMX を介した統計の公開も含まれます。利用可能なメトリックは、 https ://github.com/jsr107/jsr107spec/blob/master/src/main/java/javax/cache/management/CacheStatisticsMXBean.java で定義されています。

于 2019-08-27T09:16:06.720 に答える