`
javandroid
  • 浏览: 25545 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

使用tomcat-redis-session-manager实现session共享

 
阅读更多

测试环境:

- Version ip Port
nginx(可选)
jdk 1.7.0_79
tomcat1 7.0.70 127.0.0.1 8082
tomcat2 7.0.70 127.0.0.1 8083
redis 2.8.9 127.0.0.1 6379

1.获得tomcat-redis-session-manager.jar

①从github上下载tomcat-redis-session-manager-版本 的源码。
②编译源码
使用命令行切换到源码目录,使用命令gradle build编译。
具体步骤请参考博客:http://blog.csdn.net/wanglipo/article/details/51669526

2.拷贝jar包到tomcat的lib目录下

tomcat-redis-session-manager.jar
commons-pool2.jar
jedis.jar
将以上3个jar包拷贝到tomcat/lib下面。

3.在Tomcat中配置redis session管理器

在tomcat目录/conf/context.xml中配置如下(有几个tomcat参与管理session就要都配置)

<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
         host="localhost"
         port="6379"
         database="0" <!-- optional: defaults to "0" -->
         maxInactiveInterval="60" <!-- optional: defaults to "60" (in seconds) --> />

注意:上面的配置要注意路径。
因为github上最新版已经将tomcat6和7,jdk6和7都兼容了,而以前则是分成不同工程。因此两者使用了不同的名称。
新版本使用的是com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve
旧版本使用的是com.radiadesign.catalina.session.RedisSessionHandlerValve
【如果使用的话,直接使用新版本即可】

4.测试

注意:
因为是在同一台pc上部署的两个tomcat,所以需要将tomcat端口改成不一样的。
Tomcat1:

<Server port="8025" shutdown="SHUTDOWN">
<Connector connectionTimeout="20000" port="8082" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="8029" protocol="AJP/1.3" redirectPort="8443"/>

Tomcat2:

<Server port="8035" shutdown="SHUTDOWN">
<Connector connectionTimeout="20000" port="8083" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="8039" protocol="AJP/1.3" redirectPort="8443"/>

在两个tomcat中部署项目,这里简单处理如下。
在tomcat1的webapps下新建www目录,并在www下新建index.jsp文件。
文件内容如下:(如果是tomcat2则将”TomcatA”改为”TomcatB”)

<%@ pagelanguage="java" %>

<html>

    <head><title>TomcatA</title></head>

    <body>
        <%
        out.println("This is TomcatA");
        %>

        <br>                
        sessionID:<%=session.getId()%>

        <br>
        SessionIP:<%=request.getServerName()%>

        <br>
        SessionPort:<%=request.getServerPort()%>

    </body>

</html>

现在可以进行测试了。启动redis,启动tomcat1和tomcat2。分别访问http://localhost:8082/www/index.jsphttp://localhost:8083/www/index.jsp
访问后浏览器结果如下:
这里写图片描述
这里写图片描述

测试结果说明:
很显然,这两个浏览器输出来自不同的tomcat。但是其sessionID却是一样的,说明session共享成功。

最后使用redis客户端查看一下保存进redis的内容:
这里写图片描述
说明使用redis来管理session时,将sessionID作为key保存在了redis。key的值发现是乱码,发现还有个TTL,自然就是过期时间了(刷新一下,该值在减小)。

再使用redis自带的客户端打开瞧瞧key的值,发现了熟悉的字样,出现了jar包目录相关的字符串,还有SessionSerialization(session序列化)。
这里写图片描述

到此,使用redis来管理session的测试结束。当然了,我们还可以加个nginx来将请求分发到tomcat1和tomcat2,访问时就不需要用两个浏览器窗口来测试了,具体过程也不会太复杂,可以参考下面的博客。

文中用到的资源下载:context.xml、index.jsp和三个jar包

参考博客:基于nginx tomcat redis分布式web应用的session共享配置

相关问题:
使用tomcat-redis-session-manager 有没有弊端?

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    tomcat-redis-session-manager实现session共享 配置文件

    通过以上介绍,我们了解了如何使用Tomcat-Redis-Session-Manager实现Session共享。这个方案不仅解决了分布式环境下的Session一致性问题,还提供了可扩展性和高可用性。在实际开发中,结合合理的配置和监控,可以大大...

    tomcat-redis-session-manager-1.2-tomcat-7-java-7

    tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-...

    tomcat-redis-session-manager

    `tomcat-redis-session-manager`就是这样一款解决方案,它将Tomcat的session管理与Redis相结合,实现了跨服务器的session共享。 首先,让我们理解`tomcat-redis-session-manager`的核心概念。这是一个开源项目,它...

    tomcat-redis-session-manager的jar包-包含Tomcat7和Tomcat8

    在配置Tomcat-Redis-Session-Manager时,开发者需要在Tomcat的`context.xml`文件中添加相关的manager配置,指定使用Redis作为session存储。这通常涉及设置`Manager`元素的`className`属性为`org.apache.catalina....

    tomcat-redis-session-manager for tomcat8.5

    压缩文件包括tomcat-redis-session-manager-master-2.0.0.jar、jedis-2.7.3.jar、commons-pool2-2.3.jar三个jar包使用方法请参照https://github.com/jcoleman/tomcat-redis-session-manager。apache-tomcat-8.5.33....

    tomcat-redis-session-manager包集合下载(tomcat8)

    tomcat-redis-session-manager是专门为Tomcat设计的一个插件,它实现了SessionManager接口,允许Tomcat将session数据序列化并存储到Redis中。这样,无论用户连接到哪个Tomcat实例,都可以从Redis中获取其session信息...

    tomcat-redis-session-manager jar包

    通过使用`tomcat-redis-session-manager`,开发者可以构建更健壮、可扩展的Web应用,同时享受Redis提供的高效Session存储方案。在实际操作中,务必确保正确配置所有组件,以确保系统的稳定性和安全性。

    session 共享 tomcat-redis-session-manager 所需要的jar (绝对可用)

    这里提到的"session 共享 tomcat-redis-session-manager"就是一种解决方案,它利用Redis作为中央存储来实现Tomcat容器中的Session共享。 首先,我们来看看标题所提及的"session 共享 tomcat-redis-session-manager...

    tomcat-redis-session-manager源码

    这个类实现了`org.apache.catalina.SessionManager`接口,这意味着它可以无缝集成到Tomcat中。它使用Redis的`Jedis`客户端库进行通信,通过`KeyPrefix`策略来区分不同应用的会话键,避免了键冲突。 `RedisSession`...

    tomcat9+tomcat-cluster-redis-session-manager_4.0.zip

    "tomcat9+tomcat-cluster-redis-session-manager_4.0.zip"这个文件组合涉及到的是在Tomcat 9上实现负载均衡以及使用Redis作为Session管理器的高级配置。 首先,Tomcat 9是Apache Tomcat服务器的一个版本,它是Java ...

    tomcat-redis-session-manager-2.0.0.zip

    `tomcat-redis-session-manager-2.0.0`就是为了解决这个问题而诞生的一个开源项目,它将Tomcat容器中的Session数据存储到Redis缓存系统中,实现了跨服务器的Session共享。 Redis是一种高性能的键值数据库,特别适合...

    tomcat-redis-session-manager-1.2-tomcat-6.jar

    用于配置 tomcat-redis-session-manager

    tomcat-redis-session-manager-1.2-tomcat-6&7

    "tomcat-redis-session-manager-1.2-tomcat-6.jar" 和 "tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar" 是针对Tomcat 6和Tomcat 7的Redis Session Manager实现,这两个jar文件提供了将Tomcat的session存储...

    tomcat共享session tomcat-redis-session-manager-2.0.0.jar包下载

    tomcat-redis-session-manager-2.0.0.jar包,不用自己打包了,tomcat共享session到redis中,解决分布式应用的状态问题。

    tomcat-redis-session-manager-master-2.0.0

    tomcat-redis-session-manager-2.0.0.jar jedis-2.5.2.jar commons-pool2-2.2.jar 2.修改 conf 目录下的 context.xml 文件 &lt;Valve className="com.orangefunction.tomcat.redissessions....

    tomcat-redis-session-manager-2.0.0.jar

    tomcat-redis-session-manager的jar包,适用tomcat7版本。jar构建来自GitHub上开源项目打包

    Tomcat8亲测可用 tomcat-redis-session-manager的jar包

    标题中的“Tomcat8亲测可用 tomcat-redis-session-manager的jar包”指的是一个专为Tomcat8设计的,用于管理session的扩展组件。这个组件实现了将Tomcat应用服务器中的用户session数据存储到Redis分布式缓存系统中,...

    支持tomcat8的sessionManager,kuanrf-tomcat-redis-session-manager-1.0.jar

    支持tomcat8的sessionManager,kuanrf-tomcat-redis-session-manager-1.0.jar

Global site tag (gtag.js) - Google Analytics