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
4

3 回答 3

7

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

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

于 2013-03-19T10:31:24.553 回答
5

我遇到了同样的问题,根据@Perception 发布的答案,如果您在某些初始化类上使用@Singleton (javax.ejb.Singleton) 和@Startup (javax.ejb.Startup) 注释,并且还注入其他 @SessionScoped 或依赖于 @SessionScoped 的其他 bean,这将导致此 WELD-001303 错误。

于 2015-07-22T16:07:12.313 回答
0

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

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

于 2019-11-19T20:51:37.887 回答