标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。