介绍
memcached-session-manager是将tomcat中的session,托管到memcache中管理,实现tomcat的无状态应用。
但是在笔者的经验中,我们一般开发的时候,不会使用这个技术。而是将现有的项目中使用了session,快速升级为无状态应用时,会使用这种办法。
相关官方
https://code.google.com/p/memcached-session-manager/downloads/list
http://javolution.org/
http://www.couchbase.com/develop/java/current
详细教程
http://blog.csdn.net/ichsonx/article/details/6911358
http://www.iteye.com/topic/1125301
附件是本教程用到的lib包
tomcat7的安装
将附件中的全部jar拷贝到${tomcat_home}/lib目录下,
注意:工程目录不能有这些JAR包
修改工程目录下META-INF/context.xml或者${tomcat_home}/conf/server.xml下的context节点,增加
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.56.2:11211"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js|ico)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false"
/>
测试
用2个浏览器打开即可,首先用chrome打开,然后用火狐打开。查看jsessionid是否一致。
JSP测试代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String tmp = (String)session.getAttribute("tmp");
if(tmp == null || tmp == ""){
session.setAttribute("tmp","i am created in tomcat 2 . my id is : "+session.getId());
tmp = (String)session.getAttribute("tmp");
out.println(" null now to created value !");
out.println("<br/>");
out.println(tmp);
System.out.println(tmp);
}else{
out.println(tmp);
System.out.println(tmp);
}
%>
</body>
</html>
参考教程
http://blog.csdn.net/ichsonx/article/details/6911358
http://www.iteye.com/topic/1125301
相关官方
https://code.google.com/p/memcached-session-manager/downloads/list
http://javolution.org/
http://www.couchbase.com/develop/java/current