GitHub上有人实现Tomcat使用Redis服务器来缓存Session,可以在不修改项目的基础上,实现Redis缓存Session。
GitHub地址:https://github.com/jcoleman/tomcat-redis-session-manager/tree/master
但是,开发者只是支持到Tomcat7,Tomcat8之后的都不支持,没办法只能自己去适配。
本文参考了下面的博客:
http://www.cnblogs.com/interdrp/p/4868740.html
对源码进行修改,主要修改了“RedisSessionManager.java”这个类,具体修改如下:
private void initializeSerializer() throws ClassNotFoundException, IllegalAccessException, InstantiationException {
log.info("Attempting to use serializer :" + serializationStrategyClass);
serializer = (Serializer) Class.forName(serializationStrategyClass).newInstance();
Loader loader = null;
if (getContainer() != null) {
loader = getContainer().getLoader();
}
ClassLoader classLoader = null;
if (loader != null) {
classLoader = loader.getClassLoader();
}
serializer.setClassLoader(classLoader);
}
修改成下面这样:
private void initializeSerializer() throws ClassNotFoundException, IllegalAccessException, InstantiationException {
log.info("Attempting to use serializer :" + serializationStrategyClass);
serializer = (Serializer) Class.forName(serializationStrategyClass).newInstance();
Loader loader = null;
Context context = this.getContext();
if (context != null) {
loader = context.getLoader();
}
ClassLoader classLoader = null;
if (loader != null) {
classLoader = loader.getClassLoader();
}
serializer.setClassLoader(classLoader);
}
修改之后,只能在Tomcat8下使用,Tomcat7之前的还是用原开发者提供的jar包。
Tomcat8下使用的jar包是:
commons-pool2-2.2.jar
jedis-2.7.2.jar
tomcat-redis-session-manager-tomcat-8.jar
其它和Tomcat7一样,参考上一篇博客:
http://blog.csdn.net/linkw_92/article/details/52297981