2017-10-12 149 views
1

我是Infinispan的新用戶。我想通過我的Java代碼獲取緩存的統計信息。通過Google搜索,我發現了一些方法,但沒有任何結果可以成爲我的解決方案。請看看代碼,請讓我知道我失蹤的地方。從Java獲取Infinispan JMX統計信息

import java.io.IOException; 

import org.infinispan.Cache; 
import org.infinispan.configuration.cache.Configuration; 
import org.infinispan.configuration.cache.ConfigurationBuilder; 
import org.infinispan.configuration.global.GlobalConfiguration; 
import org.infinispan.configuration.global.GlobalConfigurationBuilder; 
import org.infinispan.manager.DefaultCacheManager; 

public class InfinispanCacheStats { 

    public static void main(String[] args) throws InterruptedException, IOException { 
     GlobalConfiguration globalConfig = new GlobalConfigurationBuilder() 
        .globalJmxStatistics() 
        .enable() 
        .build(); 

     Configuration config = new ConfigurationBuilder() 
        .expiration().wakeUpInterval(5000l).lifespan(1000l).maxIdle(500l) 
        .build(); 
     config.jmxStatistics().enabled(); 

     DefaultCacheManager m = new DefaultCacheManager(globalConfig, config, true); 
//  DefaultCacheManager m = new DefaultCacheManager("D:\\infinispan.xml"); 
     Cache<Integer, String> cache = m.getCache(); 
     cache.start(); 
     System.out.println(m.getCache().getAdvancedCache().getStats().getStores()); 
    } 
} 

我還試圖配置infinispan.xml文件並將其提供給DefaultCacheManager(),但它產生了以下異常

Exception in thread "main" java.util.ServiceConfigurationError: org.infinispan.lifecycle.ModuleLifecycle: Provider org.infinispan.query.impl.LifecycleManager could not be instantiated 
    at java.util.ServiceLoader.fail(Unknown Source) 
    at java.util.ServiceLoader.access$100(Unknown Source) 
    at java.util.ServiceLoader$LazyIterator.next(Unknown Source) 
    at java.util.ServiceLoader$1.next(Unknown Source) 
    at org.infinispan.commons.util.ServiceFinder.addServices(ServiceFinder.java:60) 
    at org.infinispan.commons.util.ServiceFinder.load(ServiceFinder.java:42) 
    at org.infinispan.util.ModuleProperties.resolveModuleLifecycles(ModuleProperties.java:41) 
    at org.infinispan.factories.GlobalComponentRegistry.<init>(GlobalComponentRegistry.java:94) 
    at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:292) 
    at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:271) 
    at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:244) 
    at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:231) 
    at com.practice.asrl.infinispan.InfinispanCacheStats.main(InfinispanCacheStats.java:26) 
Caused by: java.lang.ExceptionInInitializerError 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at java.lang.Class.newInstance(Unknown Source) 
    ... 11 more 
Caused by: java.lang.IllegalArgumentException: Logger implementation class org.infinispan.query.logging.Log_$logger has no matching constructor 
    at org.jboss.logging.Logger.getMessageLogger(Logger.java:2256) 
    at org.jboss.logging.Logger.getMessageLogger(Logger.java:2214) 
    at org.infinispan.util.logging.LogFactory.getLog(LogFactory.java:21) 
    at org.infinispan.query.impl.LifecycleManager.<clinit>(LifecycleManager.java:82) 
    ... 16 more 

內容infinispan.xml的:

<infinispan> 
<cache-container statistics="true"/> 
</infinispan> 

不限幫助將不勝感激

回答

1

您需要啓用統計從配置tionBuilder對象。它們默認是禁用的。

Configuration config = new ConfigurationBuilder() 
.expiration().wakeUpInterval(5000l).lifespan(1000l).maxIdle(500l) 
      .jmxStatistics().enable() 
      .build(); 

當你調用config.jmxStatistics().enabled();這會告訴你,如果統計功能與否,但不會更改配置。

+0

這是工作..! –