我的工作需要dao和1工厂级 像这样的东西
我的问题是如何注入它们,当代码到达在Factory类中调用getSomething
的dao时,我得到了这个异常
在摘要中我@Inject entityManager
@ApplicationScoped EnttityManagerProducer
我getEntityManager
@RequestScoped
org.jboss.weld.context.ContextNotActiveException: WELD-001303: No active contexts for scope type javax.enterprise.context.RequestScoped
at org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:691)
at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.getIfExists(ContextualInstanceStrategy.java:89)
at org.jboss.weld.bean.ContextualInstanceStrategy$CachingContextualInstanceStrategy.getIfExists(ContextualInstanceStrategy.java:164)
at org.jboss.weld.bean.ContextualInstance.getIfExists(ContextualInstance.java:63)
at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:83)
at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:99)
at org.jboss.weldx.persistence.EntityManager$1070085530$Proxy$_$$_WeldClientProxy.createQuery(Unknown Source)
at com.org.dao.impl.ConcreteDAOImpl.getByName(ConcreteDAOImpl.java:18)
at com.org.dao.impl.ConcreteDAOImp$Proxy$_$$_WeldClientProxy.getByName(Unknown Source)
at com.org.FactoryImpl.getObj(FactoryImpl.java:33)
<div [style.background-image]="'url(/img/' + item.img + ')'"
[style.width.px]="200" [style.height.px]="150p"></div>
(为了示例,我替换了真正的类)
我尝试将注释放在类和接口级别上,我不知道哪个是可取的
答案 0 :(得分:0)
这种类型的功能是使用Apache Deltaspike开箱即用的,您可以阅读scheduler module。您要提出的问题是,默认情况下,在Java EE外部不会自动启动上下文。为此,您需要手动启动一个。在CDI 2.0中,可以通过向方法/类添加@ActivateRequestContext
来完成此操作,并且将在该方法的持续时间内启动请求范围。
在CDI 2.0之前,它的平台具体。 DeltaSpike解决了这个问题更加清晰。