扩展Tomcat使用memcached存放session信息

看到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里增加了

 

代码
  1. < Manager   className = "org.apache.catalina.session.MemcachedManager"   serverlist = "127.0.0.1:11212"   snaidPerfix = "snaid"   snaidFlag = "true" >   
  2. /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

tomcatmemsession.rar
 描述:  tomcatmemsession.jar 内包含源代码 MemcachedManager.java 和MemcachedSession.java
下载
 文件名:  tomcatmemsession.rar
 文件大小:  6 KB
 下载过的:  文件被下载或查看354 次

 

1,在tomcat中找到文件apache-tomcat-6.0.37\conf\context.xml 加入内部 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.168.1.65:11211" requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$" sessionBackupAsync="false" sessionBackupTimeout="100" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" copyCollectionsForSerialization="false" /> 加入之后的content.xml的内容为 <?xml version='1.0' encoding='utf-8'?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- The contents of this file will be loaded for each web application --> <Context> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> <!-- Uncomment this to enable Comet connection tacking (provides events on session expiration as well as webapp lifecycle) --> <!-- <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值