2009-09-29 3 views

ответ

1

Абоненты темы (потребители) хранятся в закрытом поле внутри реализации JSMSSessionSession (JBMSession). Ни один из этих классов не предоставляет метод доступа к этому полю, поэтому без взлома (отражения) я не вижу способа решить эту проблему.

Но если вы можете использовать отражение и не против его использования, может быть следующая стратегия приближается к тому, что вы хотите:

  1. реализовать JBMSessionObserver для TopicSession. Этот класс будет отражать частный набор потребителей, отслеживать изменения периодически (как каждые 1 секунду или so) и уведомить зарегистрированных пользователей , отправив события.

  2. реализации JBMSessionObserverListener (s), зарегистрировать их с JBMSessionObserver получить Смените события.

Следующая проблема, которую вы будете сталкиваться в том, что JBMSession только хранит MessageListeners и не знает владельца Слушателя. У слушателей нет уникальных ключей или имен. Они просто предоставляют метод обработки сообщения.

Таким образом, вы можете быть в состоянии получить информацию , что присоединился новый слушатель, но вы не можете быть в состоянии идентифицировать реального потребителя позади слушателя.

Смежные вопросы