2016-11-06 3 views
0

Я реализовал приложение в Spring + Hibernate. Для оптимизации работы ОРМ я затем this учебник, чтобы включить мониторинг для Ehcache:Мониторинг Ehcache через JMX

@EnableWebMvc 
@EnableSpringDataWebSupport 
@EnableCaching 
... 
public class SpringWebConfig extends WebMvcConfigurerAdapter { 

    .... 

    @Bean 
    public EhCacheCacheManager ehCacheManager() { 
     EhCacheCacheManager cacheManager = new EhCacheCacheManager(); 
     cacheManager.setCacheManager((net.sf.ehcache.CacheManager) ehCacheManagerFactory().getObject()); 

     return cacheManager; 
    } 

    @Bean 
    public EhCacheManagerFactoryBean ehCacheManagerFactory() { 
     EhCacheManagerFactoryBean cmfb = new EhCacheManagerFactoryBean(); 
     cmfb.setConfigLocation(new ClassPathResource("ehcache.xml")); 
     cmfb.setShared(true); 
     return cmfb; 
    } 

    @Bean 
    public ManagementService managementService() { 
     return new ManagementService(ehCacheManager().getCacheManager(), mBeanServer(), true, true, true, true); 
    } 


    @Bean 
    public MBeanServer mBeanServer() { 
     MBeanServer bean = ManagementFactory.getPlatformMBeanServer(); 
     return bean; 
    } 
} 

Однако я не могу видеть ehache бобы в Jconsole:

enter image description here

Знаете ли вы, если я пропустил что-то включить статистику?

ответ

1

Проблема возникает из-за того, что вы просто создаете ManagementService, но не инициализируете его.

Метод managementService должен вызвать метод init() на созданный ManagementService.

Если вы фактически не нуждаются в доступе к ManagementService для других целей, выставляя его как фасоль не требуется, и вы можете заменить это на использование статического ManagementService.registerMBeans(CacheManager, MBeanServer, boolean, boolean, boolean, boolean) либо внутри ehCacheManagerFactory() или ehCacheManager() методов.

Статический метод создает ManagementService и инициализирует его.

+0

Да, это работает. Спасибо за объяснение! – bontade