更新:
现在做分布式解决方案一般都是基于cookie不开启HttpSession来实现的,当时是因为单机系统已经开发好了后面为了方便水平扩展而选择了memcached-session-manager,这几天碰巧又用到了这个,发现最新的稳定版本1.8.3已经很方便的可以使用kryo来做序列化了,这里贴一个我现在用的单机Memcached的配置
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:127.0.0.1:11211" sticky="false" lockingMode="auto" memcachedProtocol="binary" sessionBackupAsync="false" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />
新版本不需要以前的一些比如cglib-nodep-2.2.jar等包了,具体可自行参考官网的配置
另外说一句,本来是打算用tomcat-redis-session-manager的,后来发现这货实现的方案还是有bug的,比如在spring mvc中使用RedirectAttributes.addFlashAttribute会发现这方法无效,换了它官方说明的Persistence Policies都不行,也不打算替他修正了,直接换久经考验的方式。
----------------------------------------------------------分界线-----------------------------------------------------------------
上次基于Java IO的序列化方案配置了memcached-session-manager,但是性能不好,现在先简单配置成基于kryo的
<Context path="/mobilemail" docBase="D:\webapp\WebRoot" reloadable="true"> <Manager className= "de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes= "n1:192.168.112.1:11211,n2:192.168.112.2:11211" sticky="false" lockingMode="auto" requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$" sessionBackupAsync= "false" memcachedProtocol="binary" copyCollectionsForSerialization="true" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" customConverter="org.claros.commons.CustomKryoRegistration" /> </Context>
注意customConverter配置的com.test.serializer.CustomKryoRegistration这个类是自己写的类,是用来注册一些特殊类型的,同时自己负责对这些类型的序列化,可以放在项目里,也可以单独打个jar包,把以后遇到的所有复杂类型都在这里即可。项目里遇到的kryo没有注册到的类就是session里的java.util.concurrent.ConcurrentHashMap这个类,反序列化的时候本来可以做得更高效些,这里只是为了演示,直接用kryo自带的MapSerializer来反序列化
package com.test.serializer; import java.util.concurrent.ConcurrentHashMap; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.serialize.MapSerializer; import de.javakaffee.web.msm.serializer.kryo.KryoCustomization; public class CustomKryoRegistration implements KryoCustomization { public void customize(Kryo kryo) { kryo.register(ConcurrentHashMap.class, new MapSerializer(kryo)); } }
相关推荐
Memcached-session-manager所需的jar包-tomcat7-kryo序列
tomcat kryo序列化,msm-memcached-session-manager-tc7-1.8.2
压缩包里是我自己下载源码测试打包的memcached-session-manager-1.9.3 for tomcat6相关jar文件,序列化采用的是kryo-serializer。我的运行环境是:JDK1.6+TOMCAT6.0.45,MSM加Tomcat有一个特别大的坑是如果Tomcat版本是...
tomcat kryo memcache session序列化 msm-memcached-session-manager-1.8.2
nginx+tomcat7+session共享 kryo序列化所需要包 1.将上面所提到的包全部拷贝到tomcat的lib下(三台tomcat都需要) 2.修改每台tomcat的conf目录下得context.xml文件或者server.xml文件,在其中加入如下任意一段代码...
memcached session manager 1.9.6 适用于 tomcat 8 各版本 支持kryo等多种序列化方式 直接拷贝对应包到tomcat8的lib文件夹下即可
tomcat8_kryo序列化memcached依赖包
Memchached+Tomcat6|7session共享 kryo序列化所需要包 (已经更新至1.8.2版本) 1.将所有的包拷贝至tomcat目录下的lib下面; 2.修改conf/context.xml加下面的代码: <Manager className="de.javakaffee.web.msm....
memcached session manager 1.9.6 适用于 tomcat 8 各版本 memcached session manager原作者是采用maven管理和编译项目,编译起来很麻烦 不同jar版本很容易造成出错,我因为项目需要,所以把他们编译好 . 顺便分享给...
memcached实现session共享,基于tomcat8.0,采用kryo序列化
jetty-nosql-memcached-kryo.zip,jetty的会话管理器impl,用于在memcached上存储带有kryo序列化的会话。memcached session manager for jetty(基于jetty nosql);使用kryo序列化
memcached session manager 1.9.6 适用于 tomcat 8 各版本 memcached session manager原作者是采用maven管理和编译项目,编译起来很麻烦 不同jar版本很容易造成出错,我因为项目需要,所以把他们编译好并且做好分类. ...
tomcat7+nginx+memcached 配置tomcat 集群以及负载均衡所需要的msm jar包 亲测可用 msm 1.9.7版本 采用kryo序列化方式
JEA主要特点如下:1、DRPC,分布式远程过程调用,通过Storm实现,序列化由Kryo支持。2、L2二级缓存的支持,考虑到应用分布式部署的原因,数据只能通过Memcached和Redis进行缓存。3、Hibernate和Mybatis的集成,DB的...