龙空技术网

Tomcat集群实现Session共享

爱音乐的程序员小新人 1140

前言:

此时看官们对“apache228安装”大体比较关注,我们都想要学习一些“apache228安装”的相关资讯。那么小编在网上汇集了一些关于“apache228安装””的相关知识,希望同学们能喜欢,同学们快快来学习一下吧!

前言

实现Session共享的方法有很多种,利用redis、mysql或Tomcat等均可实现Session共享,本次是使用Tomcat实现Session共享。但此方案也有弊端,仅仅作用于Tomcat,以后会继续更新文章,推出其他解决方案。

环境准备

1、两个Tomcat

2、两个项目

首先我们简单配置一下项目,在index.jsp中添加如下测试代码,用来测试服务器间的的Session是否同步。

<body>

SessionID:<%=session.getId()%>

<BR>

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

<BR>

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

</body>

1234567

然后我们需要配置Tomcat的server.xml

<Engine name="Catalina" defaultHost="localhost">

1

在这段代码下面添加如下代码

<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.JvmRouteSessionIDBinderListener"/>

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

</Cluster>

12345678910111213141516171819202122232425262728293031323334353637383940

例如:

<Engine name="Catalina" defaultHost="localhost">

<Cluster>

</Cluster>

<Engine>

1234

两个Tomcat配置完毕后,我们修改一下两个项目的web.xml,添加

<distributable/>

1

例如:

<web-app>

<display-name>spring</display-name>

<distributable />

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

<welcome-file>default.html</welcome-file>

<welcome-file>default.htm</welcome-file>

<welcome-file>default.jsp</welcome-file>

</welcome-file-list>

</web-app>

123456789101112

接下来我们启动两个项目测试一下

至此Session已经实现了Tomcat集群间的共享

标签: #apache228安装 #apachehostssession #tomcat集群session共享问题 #tomcat sessionid