Use correct RedisSerializer
- Remove hardcoded JdkSerializationRedisSerializer from onMessage in favour of same defaultRedisSerializer user configured as this is most likely the one which works. - Fixes #309
This commit is contained in:
committed by
Rob Winch
parent
ef904a4544
commit
fe17e3fcc0
@@ -302,6 +302,8 @@ public class RedisOperationsSessionRepository implements FindByIndexNameSessionR
|
||||
*/
|
||||
private Integer defaultMaxInactiveInterval;
|
||||
|
||||
private RedisSerializer<Object> defaultSerializer = new JdkSerializationRedisSerializer();
|
||||
|
||||
/**
|
||||
* Allows creating an instance and uses a default {@link RedisOperations} for both managing the session and the expirations.
|
||||
*
|
||||
@@ -347,6 +349,17 @@ public class RedisOperationsSessionRepository implements FindByIndexNameSessionR
|
||||
this.defaultMaxInactiveInterval = defaultMaxInactiveInterval;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the default redis serializer. Replaces default serializer which is based on
|
||||
* {@link JdkSerializationRedisSerializer}.
|
||||
*
|
||||
* @param defaultSerializer the new default redis serializer
|
||||
*/
|
||||
public void setDefaultSerializer(RedisSerializer<Object> defaultSerializer) {
|
||||
Assert.notNull(defaultSerializer, "defaultSerializer cannot be null");
|
||||
this.defaultSerializer = defaultSerializer;
|
||||
}
|
||||
|
||||
public void save(RedisSession session) {
|
||||
session.saveDelta();
|
||||
if(session.isNew()) {
|
||||
@@ -456,8 +469,8 @@ public class RedisOperationsSessionRepository implements FindByIndexNameSessionR
|
||||
|
||||
|
||||
if(channel.startsWith(getSessionCreatedChannelPrefix())) {
|
||||
RedisSerializer<Object> serializer = new JdkSerializationRedisSerializer();
|
||||
Map<Object,Object> loaded = (Map<Object, Object>) serializer.deserialize(message.getBody());
|
||||
// TODO: is this thread safe?
|
||||
Map<Object,Object> loaded = (Map<Object, Object>) defaultSerializer.deserialize(message.getBody());
|
||||
handleCreated(loaded, channel);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -94,6 +94,9 @@ public class RedisHttpSessionConfiguration extends SpringHttpSessionConfiguratio
|
||||
RedisOperationsSessionRepository sessionRepository = new RedisOperationsSessionRepository(sessionRedisTemplate);
|
||||
sessionRepository.setApplicationEventPublisher(applicationEventPublisher);
|
||||
sessionRepository.setDefaultMaxInactiveInterval(maxInactiveIntervalInSeconds);
|
||||
if(defaultRedisSerializer != null) {
|
||||
sessionRepository.setDefaultSerializer(defaultRedisSerializer);
|
||||
}
|
||||
|
||||
String redisNamespace = getRedisNamespace();
|
||||
if(StringUtils.hasText(redisNamespace)) {
|
||||
|
||||
Reference in New Issue
Block a user