开发者社区> 问答> 正文

shiro 在使用shiro时候配置的ehcache.xml不起作用 - java报错

    <!-- 设定shiro的权限管理器 -->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <!--设置自定义realm -->
        <property name="realm" ref="monitorRealm" />
        <!-- 设置缓存管理器 -->
        <property name="cacheManager" ref="ehCacheManager" />
        <!-- 有次设置才能使得将 认证 授权信息交给 上面的cachemanager来管理-->
        <property name="sessionMode" value="native" />
        <!-- 设置session管理器 -->
        <property name="sessionManager" ref="sessionManager" />
        <!-- 设置remember me 管理器 -->
        <property name="rememberMeManager" ref="rememberMeManager"/>
    </bean>

    <!--自定义Realm 继承自AuthorizingRealm 加载用户信息和权限信息-->
    <bean id="monitorRealm" class="main.com.essence.common.security.service.impl.MonitorRealmImpl"></bean>

    
    <!-- shiro的session管理器 -->
    <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
        <property name="globalSessionTimeout" value="50000"/>
        <property name="deleteInvalidSessions" value="true"/>
        <property name="sessionValidationSchedulerEnabled" value="true"/>
        <property name="sessionValidationScheduler" ref="sessionValidationScheduler"/>
        <property name="sessionDAO" ref="sessionDAO" />
    </bean>
    <!-- 会话验证调度器 -->
    <bean id="sessionValidationScheduler" class="org.apache.shiro.session.mgt.quartz.QuartzSessionValidationScheduler">
        <property name="sessionValidationInterval" value="1800000"/>
        <property name="sessionManager" ref="sessionManager"/>
    </bean>

    <!-- shiro session由这个缓存来处理 -->
    <bean id="sessionDAO" class="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO">
        <property name="activeSessionsCacheName" value="shiro-activeSessionCache" />
    </bean>
    
    <bean id="ehCacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
           <property name="cacheManager" ref="cacheManager"/>
           <property name="cacheManagerConfigFile" value="classpath:/main/resources/ehcache.xml"/>

    </bean>

在ehcache.xml中

   <cache name="shiro-activeSessionCache"  
           maxElementsInMemory="3000"  
           eternal="false"  
           overflowToDisk="true"  
           timeToIdleSeconds="30"  
           timeToLiveSeconds="30"  
            />
    <cache name="userCache"  
           maxElementsInMemory="10000"  
           eternal="true"  
           overflowToDisk="true"
           timeToIdleSeconds="0"  
           timeToLiveSeconds="0"  
            /> 

<!-- shiro session由这个缓存来处理 -->
    <bean id="sessionDAO" class="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO">
        <property name="activeSessionsCacheName" value="shiro-activeSessionCache" />
    </bean>中value=shiro-activeSessionCache   根本没作用啊   在ehcache.xml中配置的这个cache没起作用   反而是

<!-- shiro的session管理器 -->
    <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
        <property name="globalSessionTimeout" value="50000"/>
        <property name="deleteInvalidSessions" value="true"/>
        <property name="sessionValidationSchedulerEnabled" value="true"/>
        <property name="sessionValidationScheduler" ref="sessionValidationScheduler"/>
        <property name="sessionDAO" ref="sessionDAO" />
    </bean>中的设置失效时间起作用了.....



还有个问题就是我用cacheManager中取得userCache   可以取到,但是在xml中的配置是不起作用的   求大神们知道      在线等候..........................

展开
收起
montos 2020-05-29 22:23:20 560 0
1 条回答
写回答
取消 提交回答
  • 能用了,应该是修改的没有部署上去,所以那一段代码还是注释状态的。我删了项目重新导入了一个,取消掉注释的代码可以用了

    2020-05-29 22:23:38
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载