• apache+tomcat实现session共享


    apache+tomcat上篇文章,实现了负载均衡,现在我们实现session共享

    一、tomcat集群配置,session 同步配置:

    tomcat1配置 
    A、修改Engine节点信息: <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
    B、去掉<Cluster>  <Cluster> 的注释符
    C、修改Cluster 节点信息
    <Membership              
    className="org.apache.catalina.cluster.mcast.McastService"               

    mcastBindAddress="127.0.0.1"

    #IP自己配置,远程的话写远程IP               
    mcastAddr="224.0.0.1"               
    mcastPort="45564"   
    mcastFrequency="500"               
    mcastDropTime="3000"/>
          <Receiver          
    className="org.apache.catalina.cluster.tcp.ReplicationListener"               

    tcpListenAddress="127.0.0.1"               
    tcpListenPort="4001"               
    tcpSelectorTimeout="100"               
    tcpThreadCount="6"/>

    tomcat2配置:
    A、修改Engine节点信息: <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
    B、去掉<Cluster>  <Cluster> 的注释符
    C、修改Cluster 节点信息
    <Membership      
    className="org.apache.catalina.cluster.mcast.McastService"
    mcastBindAddress="127.0.0.1"

    #IP自己配置
    mcastAddr="224.0.0.1"
    mcastPort="45564"
    mcastFrequency="500"
    mcastDropTime="3000"/>
    <Receiver         
    className="org.apache.catalina.cluster.tcp.ReplicationListener"         
    tcpListenAddress="127.0.0.1"

    #IP自己配置
    tcpListenPort="4002"

    # 一定要改
    tcpSelectorTimeout="100"
    tcpThreadCount="6"/>


    修改web应用里面WEB-INF目录下的web.xml文件,加入标签
    <distributable/>
    直接加在</web-app>之前就可以了
    做tomcat集群必须需要这一步,否则用户的session就无法正常使用。
    注意事项

    1mcastAddr="224.0.0.1"这主广播地址因此需要开启网卡组播功能

    route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

    分别在各机器上运行

    2、查看端口情况:Netstat –antl |grep 4001 同步监听的端口(2台tomcat在不同机器情况下)
    tocat1
    200811181227002475084.jpg
    tomcat2
    200811181227002481388.jpg
    3、测试广播:

    java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal1

    java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal2

    如果不报错则能正常广播tomcat-replication.jar 下载:[url]http://cvs.apache.org/~fhanik/tomcat-replication.jar[/url]如果是二台机器,可以用tcpdump 抓取包

     

    二、测试集群及session同步

    在2个tomct的webapps 下新建test 目录目录下建WEB-INF目录下的web.xml文件

    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee [url]http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd[/url]"

    version="2.4">

    <display-name>TomcatDemo</display-name>

    <distributable/>

    </web-app>

    再在webapps 建立print.jsptest.jsp

    Print.jsp :

    <%

    System.out.println("http://andashu.blog.51cto.com/);

    %>

    test.jsp:
    <%@ page contentType="text/html; charset=GBK" %>
    <%@ page import="java.util.*" %>
    <html><head><title>Cluster App Test</title></head>
    <body>
    Server Info:
    <%
    out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
    <%
      out.println("<br> ID " + session.getId()+"<br>");
      String dataName = request.getParameter("dataName");
      session.setAttribute("myname","session?");
      if (dataName != null && dataName.length() > 0) {
         String dataValue = request.getParameter("dataValue");
         session.setAttribute(dataName, dataValue);
      }
      out.print("<b>Session P±?b>");
      Enumeration e = session.getAttributeNames();
      while (e.hasMoreElements()) {
         String name = (String)e.nextElement();
         String value = session.getAttribute(name).toString();
         out.println( name + " = " + value+"<br>");
             System.out.println( name + " = " + value);
       }
    %>
      <form action="index.jsp" method="POST">
        3?<input type=text size=20 name="dataName">
         <br>
        ?:<input type=text size=20 name="dataValue">
         <br>
        <input type=submit>
       </form>
    </body>

    </html>

     

     

     

    重启所有的服务。
     
    如图可以看出tomcat 集群配置完成
    wKioL1MsmXLDq3i0AAFlFkwY8IQ185.jpg
     
    Session 复制的查看:
    在同一窗口,输入名称和值,
    在2个tomcat日志里能看到同样内容的日志,就表明成功了。
     
  • 相关阅读:
    如何向尝试登录Windows 10的用户展示提示信息
    如何在Windows 10上创建和设置虚拟硬盘
    处理器虚拟化——VMX
    处理器虚拟化——基本数据结构
    DP
    Heap与Stack的区别
    获得内核模块 通过DriverSection
    软件管理器
    获取电脑软件信息 和 浏览器信息
    字符串之间的转换
  • 原文地址:https://www.cnblogs.com/andashu/p/6406307.html
Copyright © 2020-2023  润新知