spring-mvc+spring-security+tomcat8用memcached-session-manager实现集群部署

本文介绍了如何在Tomcat 8.5.6上使用memcached-session-manager 1.9.7版本实现集群部署,涉及的关键组件包括spymemcached和kryo序列化库。配置中需要在Tomcat的lib目录下添加相关jar,并在server.xml进行设置。同时,Spring Security的序列化需指定ycustomConverter,且应用中的User类需实现Serializable接口。提供了一个GitHub上的demo工程链接供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版本:

Tomcat:8.5.6

memcached-session-manager:1.9.7

 

在tomcat的lib下需要增加以下jar:

 

memcached-session-manager-1.9.7.jar

 

memcached-session-manager-tc8-1.9.7.jar

 

spymemcached-2.12.1.jar

 

msm-kryo-serializer-2.0.0.jar

 

kryo-serializers-0.11.jar

 

kryo-1.04.jar

 

minlog-1.2.jar

 

reflectasm-1.07.jar

 

asm-4.0.jar

 

 

在tomcat的conf/server.xml文件配置如下:

  <Context path="/" docBase="/opt/demo" debug="0" privileged="true" reloadable="true" >
        <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
                memcachedNodes="n1:192.168.1.20:12001"
        sticky="false" 
        sessionBackupAsync="false"
        lockingMode="auto"
        requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" 
        customConverter="de.javakaffee.web.msm.serializer.kryo.SpringSecurityUserRegistration"
        transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />
 </Context>

 

 

在spring-securit的序列化时要用ycustomConverter="de.javakaffee.web.msm.serializer.kryo.SpringSecurityUserRegistration"

 

 

在demo工程下pom.xml需要增加

 

<dependency>
    <groupId>de.javakaffee.msm</groupId>
    <artifactId>msm-kryo-serializer</artifactId>
    <version>2.0.0</version>
</dependency>

 

demo工程下自定义的User类等需要实现序列化接口(implements Serializable)

 

demo工程下的

        LoginUser userDetails = new LoginUser(user.getUserName(), user.getUserPassword().toLowerCase(), enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, obtainGrantedAuthorities(roles));
private Set<GrantedAuthority> obtainGrantedAuthorities(List<String> roleList) {
        Set<GrantedAuthority> authSet = new HashSet<>();
        if (roleList != null) {
            for (int i = 0; i < roleList.size(); i++) {
                String roleName = roleList.get(i);
                authSet.add(new ComparableGrantedAuthority(roleName));
            }
        }
        return authSet;
    }
@Override
	public int compareTo(ComparableGrantedAuthority o) {
		return getAuthority().compareTo(o.getAuthority());
	}

 这几个地方也需要调整。

 

demo:https://github.com/tombigun/spring-security-demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值