使用Tomcat自带的机制实现Session的共享(以下操作均在Linux下进行的!)

实现Session共享全套教程,从头到尾

如何查看session的共享,最简单的就是使用nginx进行分发请求。查看不同页面的sessionID是否相同。

首先就需要在你的虚拟机上对nginx进行部署

在安装nginx之前需要下载这些依赖
1. yum install gcc-c++
2. yum install pcre pcre-devel
3. yum install zlib zlib-delvel
4. yum install openssl openssl-devel
对nginx进行解压(解压时候需要自己创建路径eg:/user/soft/)
# 下载安装包 我下载的是1.20.1版本
wget http://nginx.org/download/nginx-1.20.1.tar.gz
# 解压安装包
tar -xvf nginx-1.20.1.tar.gz
安装nginx
# 移动到下载安装包的位置
cd nginx-1.20.1/
# 执行   执行当前文件夹中的配置configure文件 默认安装在user/local/nginx(如果不确定可以使用 whereis nginx)
./configure
# 执行make
make
# 执行make install
make install
启动nginx
# 移动到/usr/local/nginx/sbin/
cd /usr/local/nginx/sbin/
# 执行 ./nginx 启动nginx(注意关闭防火墙)
./nginx
# 也可以使用这条命令执行启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#重启命令
./nginx -s reload 
#测试命令
./nginx -t 

在这里插入图片描述
在这里插入图片描述

到此nginx就配置完了,下面就是Tomcat的一些配置。
首先找到两个Tomcat下的server.xml(在Tomcat的conf下)
找到以下标签()的位置,然后将下边的复制到此

<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.MessageDispatchInterceptor"/>
          </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的集群

下面就是项目的部署

对Tomcat中项目的部署

  1. 找到Tomcat中的conf文件夹中找到这个xml文件 tomcat-users.xml 加入以下的文件

在这里插入图片描述

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="manager-gui,manger-script,manager-jmx,manager-status"/>

  1. 在Tomcat的conf文件夹下,找到Catalina/localhost 这个地方,创建manager.xml文件,将此代码复制进去

    <?xml version="1.0" encoding="UTF-8"?>
    <Context privileged="true" antiResourceLocking="false"
             docBase="${catalina.home}/webapps/manager">
        <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
    </Context>
    
    

    3、 再就是对项目的配置了,在你的web.xml文件中加入这个标签<distributable/>

    下面就可以将Tomcat启动。
    访问你的Tomcat (eg:localhost:9090/)在这里插入图片描述
    输入你刚才配置的账号和密码在这里插入图片描述
    将你的项目分别部署在集群的服务器上
    在这里插入图片描述
    最后一步就是查看成果的时候了。
    直接访问你配置的nginx的 ip+项目名+页面名,就可以查看两个session域是否共享的了(即SessionID是否一样)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值