1
TomcatのCDIに問題があります。それは私のコードのいくつかの関連する部分です:Genericsクラスで注入するとCDIが動作しない - Java
public class JPAUtil {
private static EntityManagerFactory emf = Persistence.createEntityManagerFactory("unit");
@Produces @RequestScoped
public static EntityManager getEntityManager() {
return emf.createEntityManager();
}
public void close(@Disposes EntityManager em) {
em.close();
}
}
マイDAOクラス:
public class DAO<T> implements Serializable{
private final Class<T> classe;
@Inject
protected EntityManager em;
public DAO(Class<T> classe) {
this.classe = classe;
}
}
と子クラス:
public class UserDao extends DAO<User> implements Serializable{
public UserDao() {
super(User.class);
}
}
ためのジェネリック医薬品のため、私はDAOのためにプロデューサーを使用しましたクラス:この中
public class DAOFactory {
@Produces
@SuppressWarnings({ "rawtypes", "unchecked" })
public DAO createDAO(InjectionPoint injectionPoint) {
ParameterizedType type = (ParameterizedType) injectionPoint.getType();
Class classe = (Class) type.getActualTypeArguments()[0];
return new DAO(classe);
}
}
例:
public class Test {
@Inject UserDAO userDAO;
@Inject DAO<User> dao;
}
UserDAOクラスを使用しようとすると、すべて正常に動作しますが、DAOを使用すると、EntityManagerはnullのままです。誰もが考えている?
OK、EntityManagerを工場に渡し、DAOで設定します。このように、それは動作します、ありがとう! – Montolide
@Montolide:修正したコードを質問の最後の「解決策」セクションに公開できますか? – Francois