java利用过滤器重写request将session存到couchbase中实现共享

来源:互联网 发布:翻转课堂软件 编辑:程序博客网 时间:2024/04/28 19:00

最近在做一个项目需要使用couchbase实现session共享,网上的一些文章摘过来之后很多都不可用,经过一路艰难坎坷的调试,终于将couchbase调试通过,现将具体方法记录下来,分享给大家:

原理是通过过滤器重写request请求类,将request.getSession()方法重写,所有存取参数均指向为couchbase,即利用couchbase代替session

couchbase最新的版本其实引用了JsonDoucment和JsonObject的概念,JsonObject其实就是map的键值对,不过couchbase还是一样的继承了memcached的不支持java对象的。相当恶心的一件事情,所以我采用了base64的序列化方式,将所有存入couchbase中的Object全部序列化之后存放,取的时候反序列化出来

因为是重写的request,所以程序中不用做多大的改动,正常利用request即可

1、开发环境:SpringMVC+easyUI,jdk1.6,tomcat6;Couchbase-Java-Client-2.1.2,couchbase-server-enterprise_x86_64_2.1.0.setup

2、在web.xml中配置过滤器:

 <!-- session共享过滤器 -->
   <filter>
  <display-name>CouchBaseSessionFilter</display-name>
  <filter-name>CouchBaseSessionFilter</filter-name>
  <filter-class>com.zq.base.couchbase.CouchBaseSessionFilter</filter-class>
  <init-param>
   <param-name>sessionId</param-name>
   <param-value>sid</param-value>
  </init-param>
  <init-param>
   <param-name>cookieDomain</param-name>
   <param-value></param-value>
  </init-param>
  <init-param>
   <param-name>cookiePath</param-name>
   <param-value>/</param-value>
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>CouchBaseSessionFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>


3、过滤器和couchbase 的操作类,打包下载地址:

http://download.csdn.net/detail/changjiadashaoye/8670879



0 0
原创粉丝点击