<receiver classname="org.apache.catalina.tribes.transport.nio.NioReceiver" [="" font]
tcpListenAddress="192.168.2.4"
port="4001"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
[tr]
保存退出!
注意事项:mcastAddr="224.0.0.1"需要开启网卡组播功能
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0(可以添加至开机启动)
Session复制配置
Tomcat集群中的session管理,主要有两种方式:
1. 粘性session
表示从同一窗口发来的请求都将有集群集群中同一tomcat进行处理。配置方式是在上面worker.properties文件中代码worker.controller.sticky_session=1
粘性session的好处是不会在不同的tomcat上来回跳动处理请求,但是坏处是如果该session的tomcat崩溃,那么之后的请求将由其他tomcat处理,原有session失效而重新建一个新的session,这样如果继续从session取值,会抛出nullpointer的访问异常。
2. session复制
session复制是指tomcat彼此之间通过组播方式将session发送各个tomcat实例上,如果其中一个访问出错,则另外tomcat仍然具有有效的session内容,从而能正常接管其session。坏处是tomcat实例很多或者用户在session中有大量操作时,组播发送的信息量十分惊人。Session复制配置则是在发布的WEB应用程序中的web.xml中添加xml代码
3.查看
[iyunv@Client apache_tomcat]# netstat -tnlp
tcp 0 0 192.168.2.4:4001 0.0.0.0:* LISTEN 1990/java
4.修改应用程序的web.xml文件
Web.xml配置文件加上节点,此配置说明当前web工程处于分布式部署环境,如果不进行这个配置,每次访问页面tomcat都会产生一个新的sessionid。
在之前加上用于session复制。
#vim /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml
Welcome to Tomcat
5.在webapps目录下创建目录test、在test中创建print.jsp与test.jsp
#vim /usr/local/tomcat/webapps/test/print.jsp
<%
System.out.println(wjpinrain.blog.);
%>
#vim /usr/local/tomcat/webapps/test/test.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
Cluster App Test
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"
");%>
<%
out.println("
ID " + session.getId()+"
");
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("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+"
");
System.out.println( name + " = " + value);
}
%>
?3?
?:
注:在两台服务器上均做此两个文件,修改web.xml。
重启所有服务。
访问:http://192.168.2.4/test/test.jsp
Server Info: 192.168.2.4 : 80
ID 58EDB92B320CFFD0DDE8EE948CB22DC8.tomcat1
此时我将tomcat1停止服务再刷新网页
Server Info: 192.168.2.4 : 80
ID 58EDB92B320CFFD0DDE8EE948CB22DC8.tomcat2
可以看出当其中一台tomcat停止运行后,刷新后session值不变,但提供该服务的服务器已更换为tomcat2.
到此session同步已完成!