2012-02-20 1 views
1

Я использую Apache Shiro в моем Tomcat, и я хочу включить кэширование авторизации через EhCache.Apache shiro - как узнать, что кеширование работает для авторизации?

Что я сделал добавляет эти две строки в shiro.ini:

 
cacheManager = org.apache.shiro.cache.ehcache.EhCacheManager 
securityManager.cacheManager = $cacheManager 

и скопировано Ehcache-ядро-2.5.1.jar в моем WEB-INF/каталог Lib. Для авторизации я внедрил пользовательское Realm, которое считывает разрешения из базы данных MySQL Databaase. Поэтому я хочу включить кеш, чтобы максимально сократить запросы к базе данных ... Я должен упомянуть, что я не знаком с EhCache, и я хочу включить кэширование авторизации!

Если я понял документацию Shiro правильно, выше достаточно, чтобы включить кэширование - однако я не вижу, что :(

Tomcat Запуска без исключений, и в тестовой JSP Я использую работу авторизации ОК, если я сделаю изменения в разрешениях базы данных, я вижу, что тестовый JSP сразу же знает об изменении! Я ожидал, что тестовый JSP вернет значения из кеша ... Можете ли вы сказать мне что может быть неправильным? Также существует ли способ узнать, действительно ли вызван EhCache и как он ведет себя (если ведение журнала нужно активировать, я был бы признателен, если бы вы предоставили мне подробную информацию, потому что я не очень хорошо знаком с этим) .

Update: Я также должен отметить, что я добавил строку

System.out.println("Caching is enabled " + isCachingEnabled());

в инициализации моей пользовательской области, и я получаю истинное!

ТИА,

Serafeim

ответ

1

Лично я не знаю, Shiro, и я не знаю Tomcat хорошо, но у меня есть четкое понимание Ehcache. Я знаю, что API поддерживает обновления кешей. В зависимости от того, как Shiro использует EHCache, он может обновлять кэшированную информацию, когда она изменяется. Ваш JSP, показывающий его обновление, не доказывает, что кеш работает или не работает.

В программировании довольно легко вставить код для сбора статистики для EHCache, но я не уверен, как вы это сделаете, когда он будет интегрирован таким образом. EHCache имеет встроенное ведение журнала, когда приложения приложений установлены на высокий уровень ведения журнала, но у меня были проблемы с его работой в 2.5.1. Параметры ведения журнала для EHCache описаны здесь: http://ehcache.org/documentation/operations/logging, но я не знаю, как вы бы установили Shiro для вывода сообщений.

Я надеюсь, что это поможет.

1

Используйте jconsole для просмотра статистики JMX в EHCache.

  1. Начало Jconsole
  2. Откройте вкладку
  3. На левой стороне MBeans, откройте "net.sf.ehcache" дерево.
  4. Перейдите в net.sf.ehcache/CacheStatistics/[ваше имя кеша, значение по умолчанию - net.sf.ehcache.CacheManager @ some_id]
  5. Найти кеш по имени, откройте дерево и выберите «Свойства»

Теперь вы можете посмотреть на атрибуты кэша. Играйте с вашим приложением и следите за тем, изменяются ли переменные «CacheHits» и «ObjectCount», как следует. ObjectCount - это все элементы, которые ehcache кэшировал в любой момент времени; CacheHits показывает, используются ли эти элементы.

Вы также можете сделать это удаленно, но это немного волосатое - вам нужно будет пропустить JConsole через прокси-сервер SOCKS. В этой статье описаны действия, которые необходимо выполнить для этого: http://simplygenius.com/2010/08/jconsole-via-socks-ssh-tunnel.html.