У меня есть экземпляр Tomcat, на котором я развернул ehcache-server. Теперь я делаю запросы на отдых, чтобы поместить / получить элементы из моего автономного класса Java. Все работает как положено.
Теперь я хотел бы следить за кешем. Я понимаю, что ehcache-server предоставляет mbeans нескольких классов. Но я почти не могу найти информацию о том, как зарегистрировать эти mbeans.
Когда я запускаю jconsole, я вижу экземпляр Tomcat и подключаюсь к нему. Но я не вижу классов (net.sf.ehache. *) Ehcache-server.
В документации сказано, что я могу использовать функцию registerMBeans для регистрации mbeans. Но как мне вызвать метод в веб-приложении из моего автономного Java-приложения?
Боюсь, я совершенно не понимаю этого. Я мог бы использовать несколько указателей о том, как регистрировать mbeans и проводить мониторинг.
Заранее спасибо.
@ LuisMuñoz Я не использую автономный сервер ehcache. Но я все еще пытался подключиться к localhost: 8081, но это не сработало.
Кажется, здесь есть две разные вещи: 1. сделать так, чтобы ehcache правильно регистрировался в JMX на сервере, чтобы они отображались в jconsole. 2. Напишите свой собственный JXM-клиент для вашего приложения, другими словами, заставьте ваше приложение каким-то образом играть роль jconsole.




На самом деле это довольно просто. Добавьте этот файл конфигурации ниже в свой веб-проект
@Configuration
@EnableCaching
public class SpringCachePocConfig implements CachingConfigurer {
net.sf.ehcache.CacheManager newCacheManager;
@Bean(destroyMethod = "shutdown")
public net.sf.ehcache.CacheManager ehCacheManager() {
//Construct you cache here.
net.sf.ehcache.config.Configuration config = new net.sf.ehcache.config.Configuration();
config.addCache(<Your cache>);
this.newCacheManager = new net.sf.ehcache.CacheManager(config);
return newCacheManager;
}
@Bean
public ManagementService managementService() {
return new ManagementService(ehCacheManager(), mbeanServer(), true, true, true, true);
}
@Bean
@Override
public CacheManager cacheManager() {
return new EhCacheCacheManager(ehCacheManager());
}
@Bean
public MBeanServer mbeanServer() {
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
return mBeanServer;
}
@PostConstruct
public void init() {
ManagementService.registerMBeans(ehCacheManager(), mbeanServer(), true, true, true, true);
}
}
Функция init() зарегистрирует ваши MBean-компоненты. Не забудьте добавить аннотацию @PostConstruct над вашим методом init()
Возможно, вы не подключаетесь к правильному порту из руководства сервер: «Автономный сервер автоматически предоставляет MBeanServer на порт 1 выше, чем порт прослушивания HTTP».