1

Wildfly 9.0.2 で Vaadin 7.5.8 を使用しています。私たちのアプリケーションではプッシュ サポートが必要なので、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 パラメータを削除すると、すべて正常に動作します。プッシュ構成に何か問題がありますか?

4

1 に答える 1

1

この問題は、セッション コンテキストがアクティブでないときに、VaadinUI がクライアントへの非同期プッシュを試行したことが原因である可能性があります。true 非同期プッシュではなくポーリングを使用するには、async-supported false に切り替えてみてください。

残念ながら、これは Vaadin CDI プラグインの制限です。非同期プッシュは、スコープの実装を考慮して設計されていません。

-十三

于 2015-11-09T08:49:40.250 に答える