Tomcat服务器集群Session共享

添加session共享

  这个是接上一篇文章的,不清楚的可以看这里:

  实现session共享的方式比较的简单,就是在tomcat所部署的项目TestTomcat中,修改web.xml,在其中加入下面的信息:

<distributable/>

  在Tomcat中也需要进行修改,打开conf/server.xml配置文件,在其中的Engine标签下添加下面的信息,该信息无需修改,直接拿来使用就行了。

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
                 channelSendOptions="8">

          <Manager className="org.apache.catalina.ha.session.DeltaManager"
                   expireSessionsOnShutdown="false"
                   notifyListenersOnReplication="true"/>

          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Membership className="org.apache.catalina.tribes.membership.McastService"
                        address="228.0.0.4"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="auto"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/>

            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
            </Sender>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
          </Channel>

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                 filter=""/>
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/tmp/war-temp/"
                    deployDir="/tmp/war-deploy/"
                    watchDir="/tmp/war-listen/"
                    watchEnabled="false"/>

          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>

  对于该添加方式,在Tomcat的官方文档中就有相应的描述,我们只需要拿来使用就行了,索性的是,由于该官方文档就在Tomcat中,所以说我们就没有必要翻墙去看国外的官网了,其官方文档就在webapps下的docs,双击其中的index.html即可进入官方文档首页。在首页中点击Apache Tomcat Clustering 超链接,即可打开配置session共享的页面,在这里我们就可以找到上述代码信息。

测试实现的session共享

  tomcat1中的测试文件testjsp.jsp的源码如下:

<%@ page import="java.util.Date" %><%--
  Created by IntelliJ IDEA.
  User: HP
  Date: 2018/2/1
  Time: 14:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    System.out.println(new Date()+"=============tomcat1=================");
    HttpSession session1 = request.getSession();
    System.out.println("sessionId为:" + session1.getId());
    session1.setAttribute("name","zhangsan");
    System.out.println("用户sessionId为:" + session1.getAttribute("name"));
%>
tomcat1=======<%=new Date()%><br>
sessionId为:<%=session1.getId()%><br>
用户sessionId为:<%=session1.getAttribute("name")%>
</body>
</html>

  tomcat2、tomcat3与tomcat1的不同之处仅在于去掉了session1.setAttribute("name","zhangsan");,同时将tomcat1改成各自的tomcat+数值。

测试Session共享结果

  由于之前Tomcat进行了相应的配置文件修改,所以说得需要进行重新启动,启动后,在浏览器中输入下列地址进行结果查看。

http://192.168.111.128/TestTomcat/testjsp.jsp

  其结果如下:

这里写图片描述

这里写图片描述

这里写图片描述

  如上所述,通过不断的刷新页面,我们可以看到,tomcat后的数值一直在变动,但是sessionId和用户在session中存放的信息zhangsan却一直不变,同时,由于该信息是在tomcat1中进行设置的,在tomcat2与tomcat3中并未设置,但是我们却同样的可以取到,这说明我们的session共享已经顺利的搭建完成。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值