В веб-приложении пользователи используют сеанс HTTP сервлета. Некоторые данные хранятся в CDI @SessionScoped beans. Позже на некоторых страницах связь WebSocket выполняется между браузером пользователя и сервером.Использование CDI @SessionScoped bean из WebSocket @ServerEndpoint
С GlassFish 4, при использовании впрыскивается @SessionScoped CDI боб из WebSocket @ServerEndpoint с GlassFish 4.0 я получаю сообщение об ошибке: org.jboss.weld.context.ContextNotActiveException: WELD-001303 Нет активных контекстов для типа области видимости javax.enterprise.context.SessionScoped
Из запросов типа JSP/сервлета, используя @SessionScoped CDI bean, прекрасно, но не из WebSocket @ServerEndpoint.
Также обратите внимание, что использование бинов CDI @Singleton из @ServerEndpoint отлично работает, поэтому это не проблема инъекции зависимостей общего назначения.
Возможно, я сделал что-то неправильно.
Так что мои вопросы можно использовать beansScoped CDI beans из методов WebSocket @ServerEndpoint beans? Если да, то как?
Спасибо за ваше время.
Повторяющийся вопрос http://stackoverflow.com/questions/20872300/java-ee-7-how-to-inject-an-ejb-into-a-websocket-serverendpoint (короткий ответ, поддержка CDI в 'javax.websocket' не поддерживается, определяется и spec'd) –
Я думаю, что это не тот же вопрос. Я обновляю свой пост, чтобы упомянуть, что инъекция CDI-компонентов @Singleton отлично работает. Это действительно проблема с областью. –