diff --git a/spring-integration-stomp/src/main/java/org/springframework/integration/stomp/AbstractStompSessionManager.java b/spring-integration-stomp/src/main/java/org/springframework/integration/stomp/AbstractStompSessionManager.java index 92e410b421..33c7a278f4 100644 --- a/spring-integration-stomp/src/main/java/org/springframework/integration/stomp/AbstractStompSessionManager.java +++ b/spring-integration-stomp/src/main/java/org/springframework/integration/stomp/AbstractStompSessionManager.java @@ -370,10 +370,12 @@ public abstract class AbstractStompSessionManager implements StompSessionManager } void addHandler(StompSessionHandler delegate) { - if (this.session != null) { - delegate.afterConnected(this.session, getConnectHeaders()); + synchronized (this.delegates) { + if (this.session != null) { + delegate.afterConnected(this.session, getConnectHeaders()); + } + this.delegates.add(delegate); } - this.delegates.add(delegate); } void removeHandler(StompSessionHandler delegate) { @@ -382,8 +384,8 @@ public abstract class AbstractStompSessionManager implements StompSessionManager @Override public void afterConnected(StompSession session, StompHeaders connectedHeaders) { - this.session = session; synchronized (this.delegates) { + this.session = session; for (StompSessionHandler delegate : this.delegates) { delegate.afterConnected(session, connectedHeaders); }