基于tomcat集群会话保持(DeltaManager)

本文介绍了如何使用DeltaManager在Tomcat集群中实现会话保持。首先,详细讲解了在server.xml中的配置步骤,接着阐述了在web.xml中进行分布式访问的配置,最后通过测试jsp脚本来验证配置效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、DeltaManager会话管理器配置

1.配置server.xml

注意

接收器: Receiver中
address:最好不要为auto,auto时可能会绑定到127.0.0.1上,则接受不到组播
<?xml version='1.0' encoding='utf-8'?>

<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
     <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

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

        <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="4500" frequency="500" dropTime="3000"/>
                        <Receiver
                                className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="192.168.17.174(或175)" 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"/>
                <ClusterListener
                        className="org.apache.catalina.ha.session.ClusterSessionListener"/>

        </Cluster>
      <!-- Use the LockOutRealm to prevent attempts to guess user passwords
           via a brute-force attack -->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- This Realm uses the UserDatabase configured in the global JNDI
             resources under the key "UserDatabase".  Any edits
             that are performed against this UserDatabase are immediately
             available for use by the Realm.  -->
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>
    </Engine>
  </Service>
</Server>

二、web.xml配置分布式访问

添加
<web-app>
        <diatributable/>
</web-app>

在对应的host中新建WEB-INF目录文件,放入web.xml

三、测试jsp脚本

<%@ page language="java" %>
<html>
<head><title>TomcatB</title></head>
<body>
<h1><font color="blue">TomcatB </h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% out.println("hello world,175");%>
<% session.setAttribute("abc","abc"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值