使用zinin的RedisSession共享时报java.lang.ClassCastException转换错误的最终解决方案

来源:互联网 发布:网站访问授权码源码 编辑:程序博客网 时间:2024/05/16 17:14

最近打算给项目做一下Session共享,使用Redis来实现Session的共享,一种是自己开发代码实现,另外就是利用现成的一些封装好的组件,这种相对比较方便,常见的比如Tomcat-Redis-Session-Manager,还有Tomcat-Redis-Session,我选了后者也就是Tomcat-Redis-Session,GitHub中的地址是  https://github.com/zinin/tomcat-redis-session。在Maven仓库中它被称作, Redis HttpSession For Tomcat地址是这个http://mvnrepository.com/artifact/ru.zinin/tomcat-redis-session,

只要通过几部就可以搞定,第一步就是将tomcat-redis-session-0.8.jar、commons-pool2-2.4.2.jar ,jedis-2.8.1.jar分别放到Tomcat的Lib中,第二步就是修改tomcat的conf目录中的context.xml 里面增加一条 <Manager className="ru.zinin.redis.session.RedisManager" redisHostname="192.168.14.04" redisPassword="password" redisPort="6379" redisTimeout="30000" /> 这样就连接到Redis服务了

但是在使用过程中程序只要有写入Session的时候就汇报ru.zinin.redis.session.event.RedisSessionAddAttributeEvent cannot be cast to ru.zinin.redis.session.event.RedisSessionEvent

Oct 17, 2016 4:10:12 PM ru.zinin.redis.session.RedisEventListenerThread run

SEVERE: ru.zinin.redis.session.event.RedisSessionCreatedEvent cannot be cast to ru.zinin.redis.session.event.RedisSessionEvent
java.lang.ClassCastException: ru.zinin.redis.session.event.RedisSessionCreatedEvent cannot be cast to ru.zinin.redis.session.event.RedisSessionEvent
at ru.zinin.redis.session.RedisEventListenerThread$1.onMessage(RedisEventListenerThread.java:57)
at redis.clients.jedis.JedisPubSub.process(JedisPubSub.java:129)
at redis.clients.jedis.JedisPubSub.proceed(JedisPubSub.java:102)
at redis.clients.jedis.Jedis.subscribe(Jedis.java:2628)
at ru.zinin.redis.session.RedisEventListenerThread.run(RedisEventListenerThread.java:111)
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)

这样的错误,开始是怀疑Redis的版本的问题,升级了redis的版本,无效,然后又想是包的引用版本的问题,下载了tomcat-redis-session源码重新调整了 Commons-pool和jedis的版本Build后也不行,  后来冷静下来想想,应该是包的冲突,果断将项目中的lib包中的tomcat-redis-session-0.8.jar删除,这样就和tomcat的lib包中的jar不冲突了,问题彻底解决。


0 0