CAS-ERR Cannot create a session after the response has been committed
2016-06-03 10:43
387 查看
现象:
当cas 登录人数较少时候没有错误,但是用户过多时候出现下列err
May-2016 18:09:11.932 SEVERE [http-nio-8080-exec-52] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [cas] in context with path [/dlcas-server] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: Cannot create a session after the response has been committed] with root cause java.lang.IllegalStateException: Cannot create a session after the response has been committed at org.apache.catalina.connector.Request.doGetSession(Request.java:2935) at org.apache.catalina.connector.Request.getSession(Request.java:2305) at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:895) at org.springframework.webflow.context.servlet.HttpSessionMap.getMutex(HttpSessionMap.java:98) at org.springframework.webflow.core.collection.LocalSharedAttributeMap.getMutex(LocalSharedAttributeMap.java:39) at org.springframework.webflow.conversation.impl.ContainedConversation.unlock(ContainedConversation.java:108) at org.springframework.webflow.execution.repository.support.ConversationBackedFlowExecutionLock.unlock(ConversationBackedFlowExecutionLock.java:55) at …………
解决方法:
cas-servlet.xml 配置文件<bean id="terminateWebSessionListener" class="org.jasig.cas.web.flow.TerminateWebSessionListener" p:timeToDieInSeconds="这边调大点,默认是2" />
原理
参考 http://www.mytju.com/classcode/news_readNews.asp?newsID=504发现重新设置了SessionID,正常登录时则不会设置。
怀疑是Session不存在了,导致后台重新创建Session,重新返回了login页面。
找到org.jasig.cas.web.flow下的TerminateWebSessionListener.java,
这个类监听sessionStarted和sessionEnded事件,
加log后执行,
发现,访问login页面时是session start,登录成功后是session end,
也就是说,登录动作执行后这个session就被咔嚓掉了~~~
喀嚓掉,是使用
webSession.setMaxInactiveInterval(this.timeToDieInSeconds);实现的。
默认值是2,也就是两秒
private int timeToDieInSeconds = 2;
执行logout时,只是让TGC无效,并没有重新创建Session。
相关文章推荐
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- 杰奇登录后的东西都是在session里面的
- ASP中SESSION无法保存问题的解决办法
- Oracle中的Connect/session和process的区别及关系介绍
- Node.js编程中客户端Session的使用详解
- 浅谈COOKIE和SESSION区别
- 解析PHP的session过期设置
- php中Session的生成机制、回收机制和存储机制探究
- php中将一个对象保存到Session中的方法
- 深入解析Session是否必须依赖Cookie
- 对比分析php中Cookie与Session的异同
- PHP Session机制简介及用法
- 新手菜鸟必读:session与cookie的区别
- 深入讲解PHP Session及如何保持其不过期的方法
- PHP Session变量不能传送到下一页的解决方法
- PHP中的session永不过期的解决思路及实现方法分享
- php session实现多级目录存放实现代码
- ASP.NET中Application、Cookie、Session、Cache和ViewState
- *.ashx文件不能访问Session值的解决方法