首页 > 代码库 > 不能误导人!ClassNotFoundException: com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve
不能误导人!ClassNotFoundException: com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve
目标:Tomcat 做集群,Session会话共享
环境:Tomcat+redis
互联网发达了,文章随意抄袭,也不经过自己实践,让我这个对JAVA没有任何认知的新鸟踩进了大坑,希望后者不要再踩这个坑,本文章适用于其他ClassNotFoundException错误。
配置过程我就不罗列了,基本都差不多
Github.com 官网下载tomcat-redis-session-manager 时候给出的USAGE如下:
<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 --> />
经反复试验后,Tomcat启动时候报错 ClassNotFoundException: com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve
明明已经复制到$HOME/lib下了 ,为何提示找不到?解压缩包后也能发现RedisSessionHandlerValve.class,难道JDK版本有问题?真让新鸟百思不得其解!还好,搜到一篇文章关于反编译的,我们就在SHELL下输入 javap -verbose RedisSessionHandlerValve.class
输出如下:
public class com.radiadesign.catalina.session.RedisSessionHandlerValve extends org.apache.catalina.valves.ValveBase
仔细比对className,有出入啊?!官网给出的尽然是错误的,修改后重新启动Tomcat,恢复正常。
不能误导人!ClassNotFoundException: com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve