日期:2014-05-17  浏览次数:20982 次

转: Apache,Tomcat集群设置(session 复制)

配置集群   只配置负载均衡还不行,还要session复制,也就是说其中任何一个tomcat的添加的session,是要同步复制到其它tomcat, 集

群内的tomcat都有相同的session

1. 修改tomcat1, tomcat2的server.xml,将集群部分配置(cluster)的在注释符删掉,并将tomcat2的4001端口改为4002,以避免与tomcat冲突,

当然,如果是两台电脑,是不用改端口的,去掉注释符即可


2. 2,修改测试项目test修改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>");  // 如果有新的 Session 属性设置
  String dataName = request.getParameter("dataName");
  if (dataName != null && dataName.length() > 0) {
     String dataValue = request.getParameter("dataValue");
     session.setAttribute(dataName, dataValue);
  }  out.print("<b>Session 列表</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">
    名称:<input type=text size=20 name="dataName">
     <br>
    值:<input type=text size=20 name="dataValue">
     <br>
    <input type=submit>
   </form>
</body>
</html>

然后在test 新建WEB-INF目录,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 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
       <display-name>TomcatDemo</display-name>
       <distributable/>
</web-app>

注意:在你的应用的web.xml加入<distributable/> 即可ok,

讲test复制到tomcat1,tomcat2的webapps下,

重启apache,tomcat1,tomcat2,

输入网址 http://localhost/test/test.jsp

填写一对值到session 中, 提交 , 页面应该能打印出你刚才提交的值

关掉tomcat1, 刷新页面, 页面应该仍然能打印出你刚才提交的值.