내 DAO가 포함 된 세 번째 파트 jar 라이브러리에 @PersistenceUnit으로 EntityManagerFactory를 주입하는 데 문제가 있습니다.JAR에서 PersistenceContext 삽입 lib
다음은 내 멀티 모듈 프로젝트 구조입니다.
-EAR
\-WAR ==> the webapp (maven type war)
\-EJB ==> the service facade (maven type EJB (provided to War)
\CORE ==> the legacy DAO's library (maven type JAR)
나는 ==> 모든 Maven 프로젝트에서 beans.xml 환경의 파일이 CDI 함께 모든 배선에 사용 ... 그리고 CDI 잘 작동합니다.
그러나 @PersistenceUnit 주석은 CORE 프로젝트에 넣을 때 작동하지 않습니다. (필드가 null 임)
EJB 프로젝트에서 @PersistenceUnit을 사용하면 모든 것이 잘 동작합니다.
내 persistence.xml 파일은 EJB 프로젝트의 META-INF 폴더에 있습니다 (하지만 핵심 프로젝트에도 넣었습니다 ... 성공하지 못했습니다).
public class HibernateSupport {
@PersistenceUnit
private EntityManagerFactory emf;
...
}
이 클래스는 CDI와 EJB 프로젝트에 주입 (및 작동 ...하지만 기전력 필드가 null ...)
수있는 사람 : 여기
는 주입 지점이다 도와주세요?편집 :
내가 EJB 프로젝트 (받는다는 형 EJB)에 내 핵심 프로젝트를 켜면. 그런 다음
편집 2 ... 그것을 작동 ...하지만 내 핵심 프로젝트가 POJO 프로젝트를 유지하려는 :
생산자 코드 :
@PersistenceUnit
private EntityManagerFactory emf;
@Produces
public SessionFactory getSessionFactory() {
return ((HibernateEntityManagerFactory)emf).getSessionFactory();
}
주입 지점을 알려주십시오. 이 클래스를 주입 한 곳을 어떻게 참조할까요? –
persistence.xml은 어디에 있습니까? – Skizzo
@Skizzo - EJB 프로젝트의 META-INF 폴더에있는 내 persistence.xml (하지만 핵심 프로젝트 아래에도 넣으려고했습니다) (이 정보로 업데이트 된 기본 게시물) –