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就无法正常使用。
注意事项

1、mcastAddr="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

tomcat2

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 集群配置完成
 
Session 复制的查看:
在同一窗口,输入名称和值,
在2个tomcat日志里能看到同样内容的日志,就表明成功了。
 

apache+tomcat实现session共享的更多相关文章

  1. 配置tomcat的session共享

    可通过下面方法限制一个用户访问一个服务器之后就只在该服务器上操作. 请求负载过程中会话信息不能丢失.那么在多个tomcat中session需要共享. 配置tomcat的session共享可以有三种解决 ...

  2. 高级运维(五):构建memcached服务、LNMP+memcached、使用Tomcat设置Session、Tomcat实现session共享

    一.构建memcached服务 目标: 本案例要求先快速搭建好一台memcached服务器,并对memcached进行简单的添.删.改.查操作: 1> 安装memcached软件,并启动服务d ...

  3. Apache代理Tomcat实现session共享构建网上商城系统

    一.环境介绍 二.安装配置后端服务器 三.安装配置前端服务器 四.配置Tomcat服务器实现session共享 五.构建网上商城系统 一.环境介绍 系统版本:CentOS 6.4_x86_64 Mys ...

  4. (转)tomcat架构&session共享

    (二期)16.tomcat的整体架构与session共享方案 [课程16]tomcat...共享.xmind47.6KB [课程16]tomcat...流程.xmind0.6MB [课程16]tomc ...

  5. Tomcat负载均衡、调优核心应用进阶学习笔记(三):LNMT nginx+tomcat、LAMT apache+tomcat、session会话保持、不错的站点

    文章目录 LNMT nginx+tomcat LAMT apache+tomcat 基于mod_proxy 单节点 配置基于mod_proxy的负载均衡 基于mod_jk(需要编译安装) 单节点 配置 ...

  6. 浅谈负载均衡之【tomcat分布式session共享】

    1)整理集成所需jar kryo-1.0.3.jar kryo-serializers-0.8.jar memcached-2.4.2.jar memcached-session-manager-1. ...

  7. memached实现tomcat的session共享

    由于项目服务器用的阿里云的ECS,Memcached也采用的阿里云.多个tomcat集群的session都存储在一个云memcached中. 配置步骤如下: 一.tomcat增加memcached支持 ...

  8. Tomcat中session共享问题的简单解决办法

    tomcat-redis-session-manager 使用redis配置tomcat共享session 结构图: 分析: 分布式web server集群部署后需要实现session共享,针对 to ...

  9. tomcat memecached session 共享同步问题的解决

    事件缘由:一个主项目“图说美物”,另外一个子功能是品牌商的入驻功能,是跟主项目分开的项目,为了共享登录的用户信息,而实现session共享,俩个tomcat,一个tomcat6,一个tomcat7 w ...

随机推荐

  1. 【转】淘宝技术牛p博客整理

    转自:http://blog.csdn.NET/zdp072/article/details/19574793 淘宝技术委员会是由淘宝技术部高级技术人员组成的一个组织,共分为Java分会.C/C++分 ...

  2. ioctl参数cmd=2错误

    在写内核驱动的时候,用到了ioctl.自己定义cmd作为ioctl的参数.如下: enum CMD { LEVEL_DOWN, LEVEL_UP, GPIO_INPUT, GPIO_OUTPUT, G ...

  3. 修改Java标准库源码

    以下是摘抄,实际操作没有测试   先前我曾提到,原本想借由“改动Java标准库源码”来测知Class object的生成,但由于其ctor原始设计为private,也就是说不可能透过这个管道生成Cla ...

  4. 访问GitLab的PostgreSQL数据库

    1.登陆gitlab的安装服务查看配置文件 cat /var/opt/gitlab/gitlab-rails/etc/database.yml production: adapter: postgre ...

  5. Oracle查询优化--排序

    --普通排序 SELECT * FROM emp ORDER BY sal DESC; --使用列序排序 DESC; --组合排序 DESC; --translate函数,参数分别用A.B.C表示 S ...

  6. There are inconsistent line endings in the 'xxx' script. Some are Mac OS X (UNIX) and some are Windows.问题解决

    在Window上使用Visual Studio编辑Unity3D脚本时常会出现类似如下警告: 警告 1 There are inconsistent line endings in the 'Asse ...

  7. 面试题:谈谈如何优化MYSQL数据库查询

    1.优化数据类型 MySQL中数据类型有多种,如果你是一名DBA,正在按照优化的原则对数据类型进行严格的检查,但开发人员可能会选择他们认为最简单的方案,以加快编码速度,或者选择最明显的选择,因此,你可 ...

  8. Quartz是一个完全由java编写的开源作业调度框架

    http://www.quartz-scheduler.org/ 找个时间研究一下

  9. 【RF库测试】Variable Should not Exist & variable should exist

    Variable Should not Exist variable should exist

  10. Bash Shell 里的各种括号

    天在 SegmentFault 上看到又有人问起关于Shell里各种括号的问题.对于很多玩Shell的人,括号是个很尴尬的问题,用起来没问题,说起来不明白,我在这里总结一下Bash Shell几种括号 ...