cuiyi's blog(崔毅 crazycy)

记录点滴 鉴往事之得失 以资于发展
数据加载中……

SpringMVC+MyBatis - 8 Shiro异常:EhCache initialization exception: Another unnamed CacheManager already exists in the same VM

异常1: EhCache initialization exception: Another unnamed CacheManager already exists in the same VM
具体错误如下:
Another CacheManager with same name 'cacheManager' already exists in the same VM. Please > provide unique names for each CacheManager in the config or do one of following: 
1. Use one of the CacheManager.create() static factory methods to reuse same CacheManager with same name or create one if necessary 
2. Shutdown the earlier cacheManager before creating new one with same name. The source of the existing CacheManager is: DefaultConfigurationSource [ ehcache.xml or ehcache-failsafe.xml ]

一般材料是这样说的:
<bean id="ehCacheManager" 
    class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
    p:configLocation="classpath:org/tradinglink/cache/echcache-shiro.xml"
    p:shared="true"/>

但是经过实践是要这样做的:
<bean id="shiroEncacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
<property name="cacheManager" ref="ehCacheManager"/>
</bean>
<bean id="ehCacheManager" 
    class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
    p:configLocation="classpath:org/tradinglink/cache/echcache-shiro.xml"
    p:shared="true"/>

一段关于完整的配置如下
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager" />
<property name="loginUrl" value="/login.jsp" />
<property name="successUrl" value="/index.jsp" />
<property name="unauthorizedUrl" value="/unauthorized.jsp" />
<property name="filters">
<map>
<entry key="authc" value-ref="formAuthenticationFilter"></entry>
</map>
</property>
<!-- will config in db, and then read into filterChainDefinitionsMap property -->
<property name="filterChainDefinitions">
<value>
/login = authc
/logout = logout
/resource/** = anon
/images/**= anon
/css/**= anon
/javascript/**= anon
<!-- /welcome = perms[accout:edit] -->
<!-- /security/account/view.do=authc,perms[SECURITY_ACCOUNT_VIEW] -->
/** = anon
</value>
</property>
</bean>

<!--一段关于securityManager的完整的配置如下-->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
    <property name="realm" ref="myRealm"/>
    <property name="sessionMode" value="native"/>
    <property name="sessionManager" ref="sessionManager"/>
    <property name="cacheManager" ref="cacheManager"/>
</bean>

<bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
    <property name="cacheManager" ref="ehCacheManager"/>
</bean>

<bean id="ehCacheManager" 
    class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"/>

<bean id="sessionManager"
    class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
    <property name="sessionDAO" ref="sessionDAO"/>
</bean>

<bean id="sessionDAO" 
    class="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO">
    <property name="activeSessionsCacheName" value="shiro-activeSessionCache" />
</bean>
<bean id="myRealm" class="com.foo.MyRealm"/>

posted on 2014-07-13 00:07 crazycy 阅读(5282) 评论(0)  编辑  收藏 所属分类: JavaEE技术


只有注册用户登录后才能发表评论。


网站导航: