【发布时间】:2016-12-14 22:11:03
【问题描述】:
我目前遇到了一个大问题,我们将不胜感激。
首先,以下情况发生在 J2EE 环境中,我知道我不应该自己管理线程,但不幸的是,我无法更改它,也无法使用 EJB。该环境基于 Tomcat Web Container 和 Weld CDI 管理器。
我的结构包含大量 RESTful 服务、服务层和 DAO 层实现,所有这些都通过使用相互注入 @Inject,它工作正常。当我需要将我的服务层注入到我的 Run 方法中时,问题就出现了,我得到了
WELD-001303 No active contexts for scope type javax.enterprise.context.RequestScoped.
我已经有一个方法可以返回所需的 bean 及其上下文,如下代码所述:
BeanManager manager = (BeanManager) jndiContext.lookup("java:/comp/BeanManager");
Bean<T> bean = (Bean<T>) manager.getBeans(beanClass).iterator().next();
CreationalContext<?> ctx = manager.createCreationalContext(bean);
return (T) manager.getReference(bean, beanClass, ctx);
但即使我使用这种方法,我也会得到错误。那么,有什么方法可以将我的 bean 注入到我创建和管理的 Thread 中?
谢谢。
【问题讨论】:
标签: java multithreading dependency-injection weld