ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

填坑日记(三)shiro整合memcache问题

2021-12-13 21:04:11  阅读:192  来源: 互联网

标签:1.4 memcache jar 填坑 session apache org shiro


memcache 1.1.4

问题现象

启动Shiro整合memcache共享Session的项目,访问出现There is no session with id的问题

org.apache.shiro.session.UnknownSessionException: There is no session with id [6ec13a08-5ea9-488a-bbb3-0c9da209fb31]
 at org.apache.shiro.session.mgt.eis.AbstractSessionDAO.readSession(AbstractSessionDAO.java:170) ~[shiro-core-1.4.0.jar:1.4.0]
 at org.apache.shiro.session.mgt.DefaultSessionManager.retrieveSessionFromDataSource(DefaultSessionManager.java:236) ~[shiro-core-1.4.0.jar:1.4.0]
 at org.apache.shiro.session.mgt.DefaultSessionManager.retrieveSession(DefaultSessionManager.java:222) ~[shiro-core-1.4.0.jar:1.4.0]
 at org.apache.shiro.session.mgt.AbstractValidatingSessionManager.doGetSession(AbstractValidatingSessionManager.java:118) ~[shiro-core-1.4.0.jar:1.4.0]
 at org.apache.shiro.session.mgt.AbstractNativeSessionManager.lookupSession(AbstractNativeSessionManager.java:148) ~[shiro-core-1.4.0.jar:1.4.0]
 at org.apache.shiro.session.mgt.AbstractNativeSessionManager.lookupRequiredSession(AbstractNativeSessionManager.java:152) ~[shiro-core-1.4.0.jar:1.4.0]
 at org.apache.shiro.session.mgt.AbstractNativeSessionManager.setAttribute(AbstractNativeSessionManager.java:256) ~[shiro-core-1.4.0.jar:1.4.0]
 at org

问题排查一

由于项目是使用tomcat启动,因此查询相关资料,发现tomcat默认使用的SESSION参数名和shiro可能会冲突,需要修改参数。

但是查看代码发现,代码内已经是使用自定义参数名,因此不是这个问题引起的。



        SimpleCookie cookie = new SimpleCookie("sid");
        cookie.setHttpOnly(true);
        cookie.setMaxAge(-1);

   sessionManager.setSessionIdCookie(cookie);

问题排查二

跟踪代码发现,出现这个问题是通过memcache查询session时,session不存在导致的。

代码存放session,设置过期时间了,session怎么不存在?

存放代码如下:

private void saveSession(Session session) {
        if (session != null && session.getId() != null) {
           Date date = new Date();
           date.setTime(date.getTime() + 1440 * 60 * 1000);
           memCachedClient.set(session.getId().toString(),session,date);
        }
    }

进行查询memcache服务的时间,原来memcache 1.4.4版本的服务时间为1981年,因此导致只要一存放session立马就过期了。

解决办法

升级memcache版本为1.4.5即可解决该问题

标签:1.4,memcache,jar,填坑,session,apache,org,shiro
来源: https://blog.csdn.net/HuiShouDeZaiLai/article/details/121908158

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有