文档中心 > 容器服务

Java分布式Session

更新时间:2016/05/16 访问次数:26634

适用场景

应用为通过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

购买OCS服务方式(推荐)

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>

自建Memcached方式

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接口(序列化)

 

FAQ

关于此文档暂时还没有FAQ
返回
顶部