2015-11-09 3 views
1

Я использую Vaadin 7.5.8 на Wildfly 9.0.2. В нашем приложении мы нуждаемся Нажмите поддержку, так I've добавил Maven зависимостьVaadin Push - ContextNotActiveException

<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?

+0

Почему вы упаковываете OpenWebBeans 1.2.7 на свой сервер приложений EE 7? Это, несомненно, создаст проблемы с зависимостями. –

+0

Спасибо. Ты прав. Я должен удалить зависимость. –

ответ

0

Ваша проблема, вероятно, вызвана тем, что VaadinUI пытается асинхронно нажать клиенту, в то время как контекст сеанса неактивен. Попробуйте переключиться на асинхронное ложное значение, чтобы использовать опрос, а не true async push.

Это, к сожалению, ограничение плагина Vaadin CDI, асинхронный толчок не был разработан с учетом возможностей реализации.

-Juuso

+0

Спасибо за ваш ответ. Я удалил свой тестовый код и снова начал с этого примера: https://vaadin.com/book/-/page/advanced.cdi.html - «Общение между пользовательскими интерфейсами». Нет никаких сбоев, но толчок не работает должным образом. Сообщение, которое я нажал, будет отображаться только при обновлении браузера (щелкните навигационную точку) :( –

+0

Вы должны иметь возможность использовать опрос для обновления ui независимо от контекстов cdi, у вас есть копия вашей точной кодовой базы Где-то? – jvalli

+0

Это работает :). Я взглянул на демоверсию vaadin push. Когда я добавляю следующий фрагмент кода, он работает: UI.getCurrent(). GetPushConfiguration(). SetPushMode (PushMode.AUTOMATIC) ;. Я думал, что это было по умолчанию, потому что я объявил это на сервлете. –

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