您的位置:首页 > 运维架构 > Tomcat

Tomcat服务器集群Session共享

2018-02-03 17:01 411 查看
添加session共享

测试实现的session共享

测试Session共享结果

添加session共享

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

Apache2.4.29-x64负载均衡

  实现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共享已经顺利的搭建完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息