使用zinin的RedisSession共享時報java.lang.ClassCastException轉換錯誤的最終解決方案

最近打算給項目做一下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不衝突了,問題徹底解決。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章