code: @Override
      public void doMessageReceivedListeners(final Object message) {
          runManagementTask(new Runnable() {
              @Override
              public void run() {
                  try {
                      List<SessionManagementListener> sessionListeners = getManagementListeners();
                      for (final SessionManagementListener listener : sessionListeners) {
                          listener.doMessageReceived(SessionManagementBeanImpl.this, message);
                      }
  
                      markChanged();
                  } catch (Exception ex) {
                      logger.warn("Error during doMessageReceived 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.