使用tomcat-redis-session-manager 实现session共享后程序后台发现报错如下,并且引起用户投诉。
三月 10, 2016 9:56:51 上午 org.apache.catalina.core.StandardHostValve custom
严重: Exception Processing ErrorPage[errorCode=500, location=/error.jsp]
org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.IllegalStateException: Race condition encountered: attempted to load session[6AA0605E6A4D496B048463DF6234AEE7] which has been created but not yet serialized.
at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:488)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:466)
at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:337)
at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:427)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:200)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.servlet.ServletException: java.lang.IllegalStateException: Race condition encountered: attempted to load session[6AA0605E6A4D496B048463DF6234AEE7] which has been created but not yet serialized.
at org.apache.jsp.error_jsp._jspService(error_jsp.java:157)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
... 23 more
Caused by: java.lang.IllegalStateException: Race condition encountered: attempted to load session[6AA0605E6A4D496B048463DF6234AEE7] which has been created but not yet serialized.
at com.radiadesign.catalina.session.RedisSessionManager.loadSessionFromRedis(RedisSessionManager.java:395)
at com.radiadesign.catalina.session.RedisSessionManager.findSession(RedisSessionManager.java:321)
at org.apache.catalina.connector.Request.doGetSession(Request.java:2903)
at org.apache.catalina.connector.Request.getSession(Request.java:2300)
at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:897)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229)
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:569)
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:514)
at org.apache.jasper.runtime.PageContextImpl._initialize(PageContextImpl.java:147)
at org.apache.jasper.runtime.PageContextImpl.initialize(PageContextImpl.java:126)
at org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:112)
at org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:65)
at org.apache.jsp.error_jsp._jspService(error_jsp.java:77)
... 26 more
通过sessionID查询redis存储信息发现value为null导致。
产生错误的具体源代码信息如下:
查看官方(https://github.com/jcoleman/tomcat-redis-session-manager)最新版发现该问题已经被作者发现,但没有解决。
升级到官方最新版后可以解决报错问题,不能解决value值为null的问题。
存在的问题是value值为null的数据没有过期时间会一直存在redis中。
相关推荐
tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-...
Tomcat8亲测可用 tomcat-redis-session-manager的jar包 修改了tomcat-redis-session-manager源码进行的编译生成的jar包
压缩文件包括tomcat-redis-session-manager-master-2.0.0.jar、jedis-2.7.3.jar、commons-pool2-2.3.jar三个jar包使用方法请参照https://github.com/jcoleman/tomcat-redis-session-manager。apache-tomcat-8.5.33....
tomcat9负载均衡tomcat-cluster-redis-session-manager_4.0
tomcat-redis-session-manager-2.0.0.jar,可用于Tomcat8下Redis的Session共享,亲测可用,还需要下载另外两个jar包:commons-pool2-2.4.2.jar和jedis-2.9.0.jar,maven仓库有,此处不再上传
所需的tomcat-redis-session-manager所有的jar包下载。测试环境JDK1.8,Tomact8
使用tomcat-redis-session-manager进行统一session管理所需jar包,包括tomcat6-jdk6、tomcat7-jdk7、tomcat8-jdk8
用于配置 tomcat-redis-session-manager
tomcat-redis-session-manager源码
因tomcat7使用redis共享session,其他的包存在问题,自己编译后处理通过。 该包是在https://github.com/jcoleman/tomcat-redis-session-manager 将源码编译后的包。
session 共享 tomcat-redis-session-manager 所需要的jar 和 redis-data-cache.properties文件 (绝对可用) 已经完整测试
tomcat-redis-session-manager-2.0.0.jar jedis-2.5.2.jar commons-pool2-2.2.jar 2.修改 conf 目录下的 context.xml 文件 <Valve className="com.orangefunction.tomcat.redissessions....
tomcat redis session共享,支持tomcat7 jdk7、tomcat8 jdk7、tomcat8 jdk8、tomcat8.5 jdk7、tomcat9 jdk8
tomcat-redis-session-manager-2.0.0jar包实现session共享问题
支持tomcat8的sessionManager,kuanrf-tomcat-redis-session-manager-1.0.jar
tomcat-redis-session-manager-master为tomcat集群分布式session分享功能,详细信息见http://blog.csdn.net/fengshizty?viewmode=list对应内容
包括commons-pool-1.6.jar,jedis-2.0.0.jar,tomcat-redis-session-manager-1.2-tomcat-6&7.jar