<P></P><P>这个是借鉴MSM项目自己完成的一个tomcat的sessionManager. 功能:解决了tomcat集群session共享的问题,避免使用tomcat session复制. MSM用的是spymemcached我个人不太喜欢,还是喜欢用国人开发的xmemcached项目, 所以基于这个xmemcached依照msm自己完成了一个简单的tomcat sessionManager xmemcached下载地址:
http://code.google.com/p/xmemcached/ win32的memcached下载(这个版本比较老了,不支持二进制协议)
http://code.jellycan.com/memcached/ 我项目中用的是国人自己编译的memcached_1.4.5(支持二进制协议了,但是还不能使用touch) 所有的东西我都放在附件里了,欢迎大家提意见,有兴趣的可以一起研究. 因为我对session超时这块判断好像还有点问题,还在研究tomcat文档和sessionManger源码中. session共享时需要注意的:memcached保存的对象反序列化时,如果有自定义类的话,需要通过sessionManager获得到具体项目的classloader才能反序列化,否则会出现classNotFound异常,这里困扰了我很久最后搞清楚了! 大家注意看下面的代码 Java代码 收藏代码 //注意这个:CustomObjectInputStream是tomcat,catalina.jar中的类,目的是可以根据实际的web项目来获得对应的classloader来加载需要反序列化的对象. private ObjectInputStream createObjectInputStream(ByteArrayInputStream bis)throws IOException { Loader loader = null; ClassLoader classLoader = null; if (this._manager.getContainer() != null) { loader = this._manager.getContainer().getLoader(); } if (loader != null) { classLoader = loader.getClassLoader(); } ObjectInputStream ois; if (classLoader != null) { ois = new CustomObjectInputStream(bis,classLoader); } else { ois = new ObjectInputStream(bis); } return ois; } 目前我这个功能已经在项目中使用了.</P><P></P>