Я установил hibernate.generate_statistics=true, и теперь мне нужно зарегистрировать mbeans, чтобы я мог видеть статистику в консоли jmx. Кажется, я никуда не могу попасть, и это не похоже на то, что это должно быть такой сложной проблемой. Может быть, я слишком усложняю, но в любом случае до сих пор я пытался:
- Я скопировал EhCacheProvider и создал расширенную версию CacheManager, которая перегружала init() и вызывала ManagementService.registerMBeans(...) после инициализации. Весь код работал нормально до фактического вызова registerMBeans(...), что привело бы к сбою инициализации провайдера с общей ошибкой (к сожалению, я не записал ее). Этот подход был мотивирован методами, используемыми в это пошаговое руководство по производительности liferay.
- Я создал свой собственный MBean с методом запуска, который запускал код, аналогичный этот пример регистрации jmx mbeans ehcache. Казалось, все работает правильно, и мой mbean отображается в консоли jmx, но ничего для net.sf.ehcache.
- С тех пор я обновил ehcache до 1.5 (мы использовали 1.3, не уверен, что это конкретно для jboss 4.2.1 или просто что-то, что мы выбрали сами) и перешел на использование SingletonEhCacheProvider и попытался просто вручную получить статистику вместо того, чтобы иметь дело с регистрация мбэн. Однако на самом деле ситуация не улучшилась; если я вызываю getInstance(), возвращаемый CacheManager имеет только копию StandardQueryCache, но журналы jboss показывают, что многие другие кэши были инициализированы (по одному для каждого из кэшированных объектов в нашем приложении).
РЕДАКТИРОВАТЬ: Ну, я понял одну вещь... подключение через JConsole действительно показывает mbeans статистики. Я предполагаю, что ManagementFactory.getPlatformMBeanServer() не дает вам тот же сервер mbean, который использует jboss. В любом случае, похоже, что я столкнулся с той же проблемой, что и при попытке собрать статистику вручную, потому что я получаю все нули даже после небольшого щелчка по моему приложению.