zoukankan      html  css  js  c++  java
  • tomcat8的session共享实现方案

    tomcat8的session共享实现

    下载tomcat

    版本:apache-tomcat-8.0.53.zip

    实现步骤,只需要两步

    1. 两个tomcat的server.xml都增加一样cluster配置
    	<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>
    
    1. 两个tomcat的应用的web.xml下都增加

    比如在:
    /Users/Library/Tomcat/apache-tomcat-8.0.53-8081/webapps/ROOT/WEB-INF/web.xml
    增加:

    	<distributable/>
    
    1. 然后重启两台tomcat即可

    新建jsp测试

    session.jsp

    <html>
    <head>
    <title>test2</title>
    </head>
    <body>
    	SessionID is
    	<%=session.getId()%>
    	<BR> SessionIP is
    	<%=request.getServerName()%>
    	<BR> SessionPort is
    	<%=request.getServerPort()%>
    	<%
    		out.println("Response from tomcat2");
    	%>
    </body>
    </html>
    

    比如放置在:
    /Users/Library/Tomcat/apache-tomcat-8.0.53-8082/webapps/ROOT/session.jsp
    另一台一样。

    访问:
    http://localhost:8081/session.jsp
    http://localhost:8082/session.jsp

    sessionid一致:

    SessionID is 6E5D26E07FDE6FB5D01A59F457D64333 
    SessionIP is tomcat.chinaunicom.tech 
    SessionPort is 80 Response from tomcat1
    
    SessionID is 6E5D26E07FDE6FB5D01A59F457D64333 
    SessionIP is tomcat.chinaunicom.tech 
    SessionPort is 80 Response from tomcat2
    

    注意事项

    1. 需要使用tomcat8版本(上述测试在8.0.53上通过)。如果需要tomcat7,需要修改配置
    2. 不要漏了distributable的配置,漏了session也不能共享
    3. 这种方案只适用于并发量较少的应用,并发量大需使用redis等方案

    参考官网:
    http://localhost:8082/docs/cluster-howto.html
    http://tomcat.apache.org/tomcat-8.0-doc/config/cluster.html
    翻译:
    http://wiki.jikexueyuan.com/project/tomcat/clustering.html

  • 相关阅读:
    【转】谈谈 JVM 内部锁升级过程
    TCP 和 UDP 协议简介
    《分布式系统原理介绍》读书笔记
    Paxos 协议简单介绍
    Lease 机制和 Quorum 机制
    HBase 学习二(最佳实践).
    HBase 学习一(基础入门).
    Spring 事务介绍
    《MySQL技术内幕:InnoDB存储引擎》读书笔记.
    数据库事务简介.
  • 原文地址:https://www.cnblogs.com/ouyida3/p/9425027.html
Copyright © 2011-2022 走看看