【问题标题】:WELD-001303 No active contexts for scope type javax.enterprise.context.SessionScopedWELD-001303 范围类型 javax.enterprise.context.SessionScoped 没有活动上下文
【发布时间】:2013-03-19 10:02:08
【问题描述】:

我已经搜索了每个地方,但似乎找不到解决此错误的最佳答案,有我的堆栈跟踪,有人可以告诉我发生了什么事,我已经花了两个日期来找到这个错误。 ...:(

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

【问题讨论】:

  • 没有更多细节无法回答。你的应用是什么(耳朵?战争?)
  • 我的申请是战争。

标签: java jboss annotations weld


【解决方案1】:

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

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

【讨论】:

  • 嗨,我使用weld,并生成必须对用户登录会话有效的实体管理器并注入实体管理器,并且我有一个使用过滤器来拦截请求,我得到了异常:org .jboss.weld.context.ContextNotActiveException: WELD-001303: 范围类型 javax.enterprise.context.SessionScoped 没有活动上下文 请告诉我如何做同样的事情。Sentil
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-27
      • 2015-06-29
      • 1970-01-01
      • 2015-09-04
      • 1970-01-01
      • 2014-12-25
      • 2013-05-06
      相关资源
      最近更新 更多