diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/AbstractSockJsSession.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/AbstractSockJsSession.java index 245279387d..215a69f6c3 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/AbstractSockJsSession.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/AbstractSockJsSession.java @@ -25,6 +25,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; import org.apache.commons.logging.Log; @@ -94,7 +95,7 @@ public abstract class AbstractSockJsSession implements SockJsSession { private final WebSocketHandler handler; - private final Map attributes; + private final Map attributes = new ConcurrentHashMap(); private volatile State state = State.NEW; @@ -129,7 +130,10 @@ public abstract class AbstractSockJsSession implements SockJsSession { this.id = id; this.config = config; this.handler = handler; - this.attributes = attributes; + + if (attributes != null) { + this.attributes.putAll(attributes); + } }