目標:Tomcat 作集羣,Session會話共享java
環境:Tomcat+redisredis
互聯網發達了,文章隨意抄襲,也不通過本身實踐,讓我這個對JAVA沒有任何認知的新鳥踩進了大坑,但願後者不要再踩這個坑,本文章適用於其餘ClassNotFoundException錯誤。apache
配置過程我就不羅列了,基本都差很少tomcat
Github.com 官網下載tomcat-redis-session-manager 時候給出的USAGE以下:session
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="localhost" <!-- optional: defaults to "localhost" -->
port="6379" <!-- optional: defaults to "6379" -->
database="0" <!-- optional: defaults to "0" -->
maxInactiveInterval="60" <!-- optional: defaults to "60" (in seconds) -->
sessionPersistPolicies="PERSIST_POLICY_1,PERSIST_POLICY_2,.." <!-- optional -->
sentinelMaster="SentinelMasterName" <!-- optional -->
sentinels="sentinel-host-1:port,sentinel-host-2:port,.." <!-- optional --> />ide
經反覆試驗後,Tomcat啓動時候報錯 ClassNotFoundException: com.orangefunction.tomcat.redissessions.RedisSessionHandlerValveci
明明已經複製到$HOME/lib下了 ,爲什麼提示找不到?解壓縮包後也能發現RedisSessionHandlerValve.class,難道JDK版本有問題?真讓新鳥百思不得其解!還好,搜到一篇文章關於反編譯的,咱們就在SHELL下輸入 javap -verbose RedisSessionHandlerValve.classit
輸出以下:io
public class com.radiadesign.catalina.session.RedisSessionHandlerValve extends org.apache.catalina.valves.ValveBase編譯
仔細比對className,有出入啊?!官網給出的盡然是錯誤的,修改後從新啓動Tomcat,恢復正常。