code: @Override
      public void doFilterWriteListeners(final WriteRequest writeRequest) {
  
          final Object message = writeRequest.getMessage();
          WriteRequest originalRequest = writeRequest.getOriginalRequest();
          final Object originalMessage = originalRequest != null ? originalRequest.getMessage() : null;
  
          runManagementTask(new Runnable() {
              @Override
              public void run() {
                  try {
                      List<SessionManagementListener> sessionListeners = getManagementListeners();
                      for (final SessionManagementListener listener : sessionListeners) {
                          listener.doFilterWrite(SessionManagementBeanImpl.this, message, originalMessage);
                      }
  
                      markChanged();
                  } catch (Exception ex) {
                      logger.warn("Error during doFilterWrite session listener notifications:", ex);
                  }
              }
          });
      }
docs: Notify the management listeners on a messageReceived.
  <p/>
  NOTE: this starts on the IO thread, but runs a task OFF the thread.