WELD-001303:javax.enterprise.context.SessionScoped作用域类型没有活动上下文。

10

我已经到处搜索了,但似乎找不到最适合我的答案来解决这个错误。这是我的堆栈跟踪信息,请问有人能告诉我发生了什么事吗? 我已经花费了两天的时间来查找此错误....:(

16:55:02,405 SEVERE [org.activiti.engine.impl.jobexecutor.TimerCatchIntermediateEventJobHandler] (Thread-16 (HornetQ-client-global-threads-982087879)) exception during timer execution: org.activiti.engine.ActivitiException: Exception while invoking TaskListener: WELD-001303 No active contexts for scope type javax.enterprise.context.SessionScoped
    at org.activiti.engine.impl.persistence.entity.TaskEntity.fireEvent(TaskEntity.java:529) [activiti-engine-5.11.jar:5.11]
    at ....
Caused by: org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type javax.enterprise.context.SessionScoped
    at org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:598) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
    at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:71) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
    at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:79) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
    at com.metro.wfm.shared.cdi.OverrideUserBean$Proxy$_$$_WeldClientProxy.hasBean(OverrideUserBean$Proxy$_$$_WeldClientProxy.java) [wfm-shared-0.0.2.jar:]
    ... 168 more

需要更多的细节才能回答。你的应用程序是什么(ear?war?) - artbristol
我的应用程序是war。 - Mike Nguyen
3个回答

7

Session scoped contexts 只在调用 service() 方法或执行servlet过滤器时处于活动状态。不确定您的Activiti作业如何设置,但似乎不在会话上下文的活动期间内。因此,如果注入任何需要 @SessionScoped 的bean,则注入将失败。

解决方案是删除需要 @SessionScoped 的bean注入,或修改bean。


你好,我正在使用Weld,并生成EntityManager,该EntityManager必须对已登录的用户会话有效,并注入EntityManager。我有一个使用过滤器拦截请求的用途,但是我遇到了异常:org.jboss.weld.context.ContextNotActiveException: WELD-001303:javax.enterprise.context.SessionScoped范围类型没有活动上下文。请告诉我如何解决这个问题。Sentil - user1503117

6

我曾经面临同样的问题,根据@Perception发布的答案,如果您在某个初始化类上同时使用@Singleton(javax.ejb.Singleton)和@Startup(javax.ejb.Startup)注释,并注入其他bean,该bean是@SessionScoped或依赖于其他bean,该bean是@SessionScoped,则会导致WELD-001303错误。


0

你应该将前端会话逻辑分离出来。想象一下,你为每个已登录的用户都有一个@SessionScoped bean,它包含Account对象。

登录后,同时将Account对象保存到会话bean中,并在@ApplicationScoped bean中保存Account对象,但是在HashMap(id,account)中,在后端逻辑中,每个Singleton bean都可以访问和获取@Application Scoped bean中的数据。甚至@Schedule方法也可以。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接