Ваадин Пуш - ContextNotActiveException
Я использую Vaadin 7.5.8 на Wildfly 9.0.2. В нашем приложении нам нужна поддержка Push, поэтому я добавил зависимость maven
<groupId>com.vaadin</groupId>
<artifactId>vaadin-push</artifactId>
и добавил параметр PushMode для инициализации сервлета.
@WebServlet(value = {"/ui/*", "/VAADIN/*"}, asyncSupported = true, initParams = {
@WebInitParam(name = "UIProvider", value = "com.vaadin.cdi.CDIUIProvider"),
@WebInitParam(name = "pushmode", value = "automatic")})
При запуске приложения я увижу страницу входа в наше приложение. С этого момента каждое действие, которое вызывает связь с сервером, заканчивается этой ошибкой:
Caused by: javax.enterprise.context.ContextNotActiveException: WebBeans context with scope type annotation @SessionScoped does not exist within current thread
at org.apache.webbeans.container.BeanManagerImpl.getContext(BeanManagerImpl.java:330) ~[openwebbeans-impl-1.2.7.jar:1.2.7]
at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.getContextualInstance(NormalScopedBeanInterceptorHandler.java:88) ~[openwebbeans-impl-1.2.7.jar:1.2.7]
at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.get(NormalScopedBeanInterceptorHandler.java:70) ~[openwebbeans-impl-1.2.7.jar:1.2.7]
at com.vaadin.cdi.internal.BeanStoreContainer$$OwbNormalScopeProxy0.getUIBeanStore(com/vaadin/cdi/internal/BeanStoreContainer.java) ~[na:1.0.3]
at com.vaadin.cdi.internal.UIScopedContext.get(UIScopedContext.java:97) ~[vaadin-cdi-1.0.0.alpha2.jar:1.0.3]
at org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:754) ~[openwebbeans-impl-1.2.7.jar:1.2.7]
at org.apache.webbeans.inject.instance.InstanceImpl.get(InstanceImpl.java:139) ~[openwebbeans-impl-1.2.7.jar:1.2.7]
Все работает нормально, когда я удаляю параметр push из конфигурации сервлета. Что-то не так с моей конфигурацией push?
1 ответ
Ваша проблема, вероятно, вызвана тем, что VaadinUI пытается выполнить асинхронную передачу клиенту, когда контекст сеанса не активен. Попробуйте переключиться на ложно поддерживаемое асинхронное использование, чтобы использовать опрос вместо истинного асинхронного push.
Это ограничение плагина Vaadin CDI, к сожалению, асинхронный толчок не был разработан с учетом реализации областей.
-Juuso