Вы пометили беседу как постоянную с помощью беседы # begin ()?
Диалог CDI по умолчанию является «временным», что означает, что он ведет себя так же, как бин @RequestScoped.
Если у вас есть поддерживающий боб, просто введите в него Разговор:
private @Inject Conversation conversation;
Затем вызовите conversation.begin()
в вашем действии, которое должно открыть разговор.
Будьте осторожны и обратите внимание, что вам также необходимо явно end()
ваш разговор!
Гораздо более простой способ справиться с этим в вашем коде может заключаться в использовании Apache DeltaSpike @ViewAccessScoped
. Это своего рода «авто-разговор». Контекстный экземпляр будет оставаться активным до тех пор, пока вы к нему обращаетесь. Как только вы уйдете и больше не трогаете его, он будет уничтожен.
Это, кстати, также касается нескольких вкладок браузера. У нас даже есть отдельная область для этого: @WindowScoped. Это дает вам отдельные экземпляры для каждой вкладки браузера! Может также хорошо работать в вашем случае использования.