应用为通过Tomcat或Jetty镜像创建的服务(Java Web),应用需要在Session中存取数据,且应用包含多个容器,容器间Session数据需要同步
1、准备一个应用可访问的Memcached协议缓存服务,用于存放Session内容。可用购买OCS服务(推荐),也可自己搭建一个Memcached环境
2、分别下载分布式Session(点击下载)和Memcached客户端(点击下载)的jar包
3、将下载jar包引入应用classpath中,在应用的web.xml中配置TaeSessionFilter(详见范例),然后就可以在应用中像使用本地Session一样使用分布式Session了
购买OCS服务和自建Memcached服务都可以使用分布式Session
web.xml文件:
<filter>
<filter-name>TaeSessionFilter</filter-name>
<filter-class>com.taobao.tae.session.TaeSessionFilter</filter-class>
<init-param>
<param-name>ocs_username</param-name>
<param-value>ocs服务用户名</param-value>
</init-param>
<init-param>
<param-name>ocs_password</param-name>
<param-value>ocs服务密码</param-value>
</init-param>
<init-param>
<param-name>ocs_host</param-name>
<param-value>ocs服务访问地址</param-value>
</init-param>
<init-param>
<param-name>ocs_port</param-name>
<param-value>ocs服务访问端口</param-value>
</init-param>
<init-param>
<param-name>cache_type</param-name>
<param-value>ocs</param-value>
</init-param>
<init-param>
<param-name>debug_switch</param-name>
<param-value>on</param-value>
<!-- debug开关,on为开启,off为关闭,开启debug后可直接通过url查询某个SessionId的所有Session内容 -->
</init-param>
<init-param>
<param-name>debug_auth</param-name>
<param-value>auth123</param-value>
<!-- 使用debug url时候的密码,防止debug开关开启session数据暴露,密码内容可自定义 -->
</init-param>
</filter>
<filter-mapping>
<filter-name>TaeSessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
web.xml文件:
<filter>
<filter-name>TaeSessionFilter</filter-name>
<filter-class>com.taobao.tae.session.TaeSessionFilter</filter-class>
<init-param>
<param-name>ocs_host</param-name>
<param-value>自建Memcached服务访问地址</param-value>
</init-param>
<init-param>
<param-name>ocs_port</param-name>
<param-value>自建Memcached服务访问端口</param-value>
</init-param>
<init-param>
<param-name>cache_type</param-name>
<param-value>memcached</param-value>
</init-param>
<init-param>
<param-name>debug_switch</param-name>
<param-value>on</param-value>
<!-- debug开关,on为开启,off为关闭,开启debug后可直接通过url查询某个SessionId的所有Session内容 -->
</init-param>
<init-param>
<param-name>debug_auth</param-name>
<param-value>auth123</param-value>
<!-- 使用debug url时候的密码,防止debug开关开启session数据暴露,密码内容可自定义 -->
</init-param>
</filter>
<filter-mapping>
<filter-name>TaeSessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
1、应用调试期间可将debug开关打开,通过/tae/session接口查看指定SessionId的session内容,如应用域名为 http://test.hz.taeapp.com/ 则debug的URL为 http://test.hz.taeapp.com/_tae_/session?debug_auth=debug密码&sid=sessionId (注意替换debug密码和sessionId)
2、Session的可用性依托于缓存的稳定性,使用前先确认应用到缓存网络是否可达,这里推荐使用阿里的OCS服务缓存Session
3、由于分布式Session存储在OCS/Memcached中,所以存入Session的对象需要实现Serializable接口(序列化)