posts - 3,  comments - 2,  trackbacks - 0
http://www.javaeye.com/topic/81641
看到javayou的刘东关于扩展Tomcat的Session存取机制的思考: 
http://www.javayou.com/html/diary/showlog.vm?sid=2&log_id=8534 
结合自己曾经写好的在过servlet滤器实现session存放到memcached的代码, 
采取扩展 org.apache.catalina.session包下 一共新增MemcachedManager 和 MemcachedSession即可。 

  实现MemcachedManager继承 org.apache.catalina.session.StandardManager, 
MemcachedSession继承 org.apache.catalina.session.StandardSession。 

动手试了一下,搞定getAttribute和setAttribute和expire,removeAttribute。 

测试步骤如下: 
1.首先从http://www.javaeye.com/topic/24505 
下载memcached的windows版本。 

2.下载相关的jar,需要log4j.jar,commons-logging.jar,commons-logging-adapters.jar,commons-logging-api.jar,java_memcached-release_1.5.1.jar 

复制到x:\apache-tomcat-6.0.13\lib下面。 

3。然后下载本文附件tomcatmemsession.rar,然后改名为tomcatmemsession.jar,也复制到x:\apache-tomcat-6.0.13\lib下面。 

4.将tomcatmemsession.jar里的context.xml替换x:\apache-tomcat-6.0.13\conf下同名文件。 

(主要是context.xml里增加了 

Java代码 复制代码
  1. <Manager className="org.apache.catalina.session.MemcachedManager" serverlist="127.0.0.1:11212" snaidPerfix="snaid" snaidFlag="true">  
  2. lt;/Manager>  



5.运行memcached.exe。 
(可以运行memcached.exe -vv , -vv可以在控制台显示日志信息 ) 
6。启动tomcat,在web应用中setAttribute设置支持序列化的属性值。 
7. 然后重起tomcat,在再浏览器里访问,jsp读取相关属性的值(使用getAttribute方法),将发现相应属性值都可以正常读取。 

(getAttributeNames没有重写,因此无法遍历方式读取属性,只能通过getAttribute读取) 


   在自己通过servlet过滤器方式实现的时候,使用了oscache分布式cache,这样可以减少对memcached的访问次数。 
但是在MemcachedSession里使用oscache的时候,出现点小问题,没时间仔细检查,于是把oscache去掉了。 

有空再加上oscache作为二级缓存。 

tomcatmemsession.jar 内包含源代码 MemcachedManager.java 和MemcachedSession.java 
posted on 2008-12-13 02:07 sw0rd 阅读(1020) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: