【发布时间】:2018-08-10 10:30:02
【问题描述】:
我们在应用程序中混合使用了 CDI 和 EJB。在启动时,我们收到错误Caused by: org.jboss.weld.context.ContextNotActiveException: WELD-001303: No active contexts for scope type javax.enterprise.context.RequestScoped。
我们不明白问题到底出在哪里,所以这里只是代码的整体结构:
@Stateless
public class SomeFacade {
@Inject
private SomeService someService;
}
@Stateless
public class SomeService {
@Inject
private SomeDao someDao;
}
@Stateless
public class SomeDao {
@Inject
private EntityManager entityManager;
}
@ApplicationScoped
public class EntityManagerProducer {
@Produces
@ApplicationScoped
public EntityManagerFactory createEntityManagerFactory() {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("one");
return emf;
}
public void close(@Disposes EntityManagerFactory entityManagerFactory) {
entityManagerFactory.close();
}
@Produces
public EntityManager createEntityManager(EntityManagerFactory entityManagerFactory) {
return entityManagerFactory.createEntityManager();
}
}
我们一般可以改变什么吗?
【问题讨论】:
-
你能指出异常来自哪里吗?例如。哪个注入或bean调用。从您的代码中看不到您将使用
RequestScoped的地方。根据规范,EJB 的Stateless被 CDI 视为Dependent。
标签: ejb cdi weld payara-micro