session redis共享java_Tomcat8.0 + Redis 实现 Session 会话共享

由于项目需要,需要实现Tomcat8.0 + Redis 实现 Session 会话共享,以便于实现多应用集群。后参考了开源项目: https://github.com/jcoleman/tomcat-redis-session-manager 进行调整后实现该需求。

实现该需求需要进行三步操作:

下载tomcat-redis-session-manager,调整代码后进行打包。

拷贝相关的Jar包到Tomcat8.0的Lib包下

修改Tomcat8.0 的conf/Context.xml 文件

** 1.下载tomcat-redis-session-manager,调整代码后进行打包。**

创建maven项目(或者直接用gradle编译也可以)

把src/main/java/com/orangefunction/tomcat/redissessions/复制到项目中

修改 RedisSessionManager.java 代码

修改1:修改tomcat-catalina的版本为8.0.26

org.apache.tomcat

tomcat-catalina

8.0.26

/修改2:修改 RedisSessionManager.java 文件startInternal方法

Boolean attachedToValve = false;

// 这是原先的版本

// for (Valve valve :getContext().getPipeline().getValves()) {

// 这是调整后的内容

for (Valve valve :getContext().getPipeline().getValves()) {

if (valve instanceof RedisSessionHandlerValve) {

this.handlerValve = (RedisSessionHandlerValve) valve;

this.handlerValve.setRedisSessionManager(this);

log.info("Attached to RedisSessionHandlerValve");

attachedToValve = true;

break;

}

}

修改3:修改 RedisSessionManager.java 文件 initializeSerializer方法

Loader loader = null;

/*

// 这是原先的写法

if (getContainer() != null) {

loader = getContainer().getLoader();

}

*/

// 这是现在的写法

if (getContext() != null) {

loader = getContext().getLoader();

}

ClassLoader classLoader = null;

以上内容都调整后,利用Maven打包成Jar包,譬如我本地叫:tomcat-redis-session.jar

2. 拷贝相关的Jar包到Tomcat8.0的Lib包下

分别拷贝commons-pool2-2.2.jar、jedis-2.5.2.jar、以及刚才打包生成的 tomcat-redis-session.jar 到tomcat8.0 的lib下。

3. 修改Tomcat8.0 的conf/Context.xml 文件

当上面三大步骤都处理完成后,重启 Tomcat 就可见证奇迹了。

转载至链接:https://my.oschina.net/billyteam/blog/1859966

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值