在Quartz Job中注入DAO和Factory

时间:2017-08-05 13:34:02

标签: java cdi weld

我的工作需要dao和1工厂级 像这样的东西

https://pastebin.com/kK7VcbW1

我的问题是如何注入它们,当代码到达在Factory类中调用getSomething的dao时,我得到了这个异常

在摘要中我@Inject entityManager @ApplicationScoped EnttityManagerProducergetEntityManager @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>

(为了示例,我替换了真正的类)

我尝试将注释放在类和接口级别上,我不知道哪个是可取的

1 个答案:

答案 0 :(得分:0)

这种类型的功能是使用Apache Deltaspike开箱即用的,您可以阅读scheduler module。您要提出的问题是,默认情况下,在Java EE外部不会自动启动上下文。为此,您需要手动启动一个。在CDI 2.0中,可以通过向方法/类添加@ActivateRequestContext来完成此操作,并且将在该方法的持续时间内启动请求范围。

在CDI 2.0之前,它的平台具体。 DeltaSpike解决了这个问题更加清晰。