还是tomcat集群的东西,实现的memcached共享session(用的国人开发的xmemcached)_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4379 | 回复: 0   主题: 还是tomcat集群的东西,实现的memcached共享session(用的国人开发的xmemcached)        下一篇 
ying
注册用户
等级:上尉
经验:694
发帖:59
精华:0
注册:2012-10-12
状态:离线
发送短消息息给ying 加好友    发送短消息息给ying 发消息
发表于: IP:您无权察看 2012-11-2 11:06:20 | [全部帖] [楼主帖] 楼主

<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>



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论