我无法注入在 lib jar 上声明的 dao bean。所以我有一个带有持久性上下文、实体和 daos 的 jar(我的)。这是一个 dao 示例:
@Stateless
public class SomeDao {
@PersistenceContext
private EntityManager em;
...
}
现在我想在我的主应用程序上使用这个 dao。
一个 jax-rs 用例:
@Path("rs")
public class WebService{
@Inject
private SomeDao dao;
@POST
public Response doPost(){
//dao is injected but nullpointer thrown on EntityManager
dao.doSomething();
}
...
}
两个项目中都有一个 beans.xml(在 META-INF/ 下用于 lib,WEB-INF/ 用于 Web 应用程序)。像这个 :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
- - - - - - - 编辑 - - - - - -
我刚刚发现我是否删除了 @Stateless 注释和它的生产者。所以问题实际上是:如何用 CDI 注入在 lib jar 上声明的 EJB。