4

We configured springsessions using redis as session store. With bigger load it ended in a result where users happen to get back random session data.

Unfortunately we are not able to reproduce it again and it is not reproducable in test environment.

Has anyone had similar experience and can maybe point a direction what to look at?

  • We encountered a similiar problem in our application, did you find the cause / a solution? – Tim Jan 23 '18 at 08:23

1 Answers1

1

I have used spring session using redis session store in my project as follows ,it works normal ,i share it , hope it helps!

used spring boot starter version : 1.4.3

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>

     <dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session</artifactId>
    </dependency>


    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>4.2.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>biz.paluch.redis</groupId>
        <artifactId>lettuce</artifactId>
        <version>3.5.0.Final</version>
    </dependency>

Spring session redis configuration class :

package az.com.cybernet.aas.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.data.redis.connection.lettuce.
LettuceConnectionFactory;
import org.springframework.session.data.redis.config.annotation.web.http.
EnableRedisHt
tpSession;
import org.springframework.session.web.http.CookieHttpSessionStrategy;
import org.springframework.session.web.http.CookieSerializer;
import org.springframework.session.web.http.DefaultCookieSerializer;
import org.springframework.session.web.http.HttpSessionStrategy;



@EnableRedisHttpSession
public class RedisConfig {

@Value("${spring.redis.host}")
private String hostname;
@Value("${spring.redis.port}")
private String port;
// @Value("${spring.redis.password}")
// private String password;

@Bean
public LettuceConnectionFactory connectionFactory() {
    LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory();
    connectionFactory.setHostName(hostname);
    // connectionFactory.setPassword(password);
    connectionFactory.setDatabase(2);
    connectionFactory.setPort(Integer.parseInt(port));
    return connectionFactory;
}

@Bean
public CookieSerializer cookieSerializer() {
    DefaultCookieSerializer serializer = new DefaultCookieSerializer();
    serializer.setCookieName("JSESSIONID");
    serializer.setCookiePath("/");
    serializer.setDomainNamePattern("^.+?\\.(\\w+\\.[a-z]+)$");
    return serializer;
}

@Bean
public HttpSessionStrategy strategy() {
    CookieHttpSessionStrategy cookieHttpSessionStrategy = new CookieHttpSessionStrategy();

    cookieHttpSessionStrategy.setCookieSerializer(cookieSerializer());
    return cookieHttpSessionStrategy;

}

}

Samir
  • 655
  • 5
  • 14