转: 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, 刷新页面, 页面应该仍然能打印出你刚才提交的值.