Я создаю приложение Vaadin и, основываясь на демонстрационном приложении QuickTickets и других примерах, решил использовать для обработки событий Guava EventBus
, поэтому я сохраняю ссылаясь на него на уровне экземпляра UI
., связанный с несериализуемым Guava EventBus в Ваадине с сериализацией сеанса
Поскольку я также использую Spring Ботинки с Devtools, который может перезагрузить приложение без необходимости холодного запуска, я обнаружил, что гуавы-х EventBus
не Serializable
, что приводит к java.io.NotSerializableException
.
Как этого можно избежать?
Например:
- Есть ли способ сделать
Serializable
обертки вокругEventBus
? Ему нужно будет сохранить список зарегистрированных прослушивателей событий и перерегистрировать их наEventBus
во время перезагрузки сессии (и, я думаю, для этого нужна ссылкаtransient
наEventBus
, чтобы она не сериализовалась). - Поскольку я все же использую Spring, возможно, я смогу сделать
EventBus
UI-областьюBean
? Думаю, мне все-таки нужно обработать перерегистрацию слушателей, тогда каким-то образом.
мне нужно делать использовать AspectJ, если я использую эту библиотеку? Кроме того, как именно происходит перерегистрация абонентов EventBus? – herman
@herman Нет, вам не нужен AspectJ, это библиотека весны. Пожалуйста, разместите фактическую декларацию бобов в вопросе. Есть несколько способов сделать это. –