2012-06-21 21 views
5

'da başka bir adsız CacheManager zaten var Apache Shiro etkin web hizmetimde yetkilendirme önbelleğe almayı işlemek için EhCache yapılandırılmaya çalışıyorum. Şu anda aşağıdaki özel durum alıyorum:Apache Shiro EhCache başlatma özel durumu: Aynı VM

org.apache.shiro.cache.CacheException: net.sf.ehcache.CacheException: Başka bir isimsiz CacheManager zaten aynı VM bulunmaktadır. Lütfen yapılandırmadaki her bir CacheManager için benzersiz adlar verin veya aşağıdakilerden birini yapın:
1. Aynı CacheManager'ı aynı adla yeniden kullanmak veya gerekiyorsa bir tane oluşturmak için CacheManager.create() statik fabrika yöntemlerinden birini kullanın. 2. Bilgisayarı kapatın. aynı ada sahip yeni bir tane oluşturmadan önce önceki cacheManager.

Benim shiro.ini benziyor:
[ana]
...
CacheManager = org.apache.shiro.cache.ehcache.EhCacheManager cacheManager.cacheManagerConfigFile = sınıf yolu: ehcache.xml
securityManager.cacheManager = $ cacheManager

Bu StackOverflow defterinden Spring'i kullanan insanlar, CacheManager'ın tek bir satır olmasını zorlayarak bu soruna neden oldular: Another unnamed CacheManager already exists in the same VM (ehCache 2.5).

Çalışmaya başlamadan önce Spring başlatıcılığını kullanmayan herkes var mı (dropwizard çerçevesinde çalışıyorum ve ilkbaharda çekmeye gerek yok)? Shiro.ini'den tekil yapılandırmayı zorlamanın bir yolu var mı?

Teşekkürler!

cevap

2

EhCacheManager'ı genişleten ve cacheManager'ınızı yapıcıya ayarlayan bir özel sınıf oluşturun. Bu (net.sf.ehcache.CacheManager.create()) zaten varolan bir önbellekleyiciyi yeniden kullanmanızı sağlar.

package lekkie.omotayo 

public class MyShiroCacheManager extends EhCacheManager 
{ 

    public CacheManager() 
    { 
     setCacheManager(net.sf.ehcache.CacheManager.create()); 
    } 
} 

Sonra bunu yapabilirsiniz:

cacheManager = lekkie.omotayo.MyShiroCacheManager 
cacheManager.cacheManagerConfigFile = classpath:ehcache.xml 
securityManager.cacheManager = $cacheManager