2010-08-01 1 views
2

GlassFish v3.0.1에 배포 된 CDI/Weld, JPA 2.0, EJB 3.1 등 (Java EE 6) 프리젠 테이션 레이어에 Wicket을 사용하는 응용 프로그램이 있습니다.Wicket/JPA에 엔티티 관리자 주입 오류가 발생했습니다.

나는 다음과 같은 오류 얻을 @EJB 사용하여 개찰구 페이지에는 EJB를 주입 할 때 : java.lang.IllegalStateException : 나는 @Inject를 사용하여 주입 할 때 unitName

에 대한의 EntityManagerFactory를 검색 할 수 없습니다를, 다음 오류가 발생합니다. java.lang.IllegalStateException : ejb UserRepository의 ejbRef를 유형 클래스의 비즈니스 오브젝트로 변환 할 수 없습니다.

문제점은 JPA에서 발생한다고 생각합니다. 제대로 작동하는 JSF 응용 프로그램과 동일한 구성을 사용하고 있기 때문에 문제가 무엇인지 파악할 수 없습니다. 연결 풀은 올바르게 설정되어 있고 GlassFish를 통해 올바르게 ping을하고 있습니다. 클래스 경로에 wicket-weld를 포함 시켰고 동일한 결과로 wicketstuff-javaeeapi에 대한 이전 Java EE 5 wicketstuff 프로젝트를 사용해 보았습니다.

도움을 주시면 감사하겠습니다.

답변

1

당신은 예외를 얻을 경우

Unable to retrieve EntityManagerFactory for unitName

그것은 당신의 persistence.xml 파일을 감지하지 못하고 있음을 의미 할 수 있습니다. 파일이 WEB-INF\classes\META-INF 디렉토리에 있는지 확인하십시오.

GlassFish의 관리 콘솔로 이동하여 응용 프로그램 섹션에서 응용 프로그램에 대해 [ejb, web, weld, jpa]과 같은 내용이 표시되는지 확인하여 응용 프로그램이 JPA를 사용할 수 있는지 확인할 수 있습니다. jpa이 표시되지 않으면 JPA 구성 파일을 찾을 수 없습니다.

+1

당신은 내 영웅입니다! 왜 JSF 설정과 다른가요? 왜 이것이 문서화되지 않았습니까? – kgrad

0

표준 "java : global"이름을 사용하여 EJB를 항상 검색 할 수 있습니다. 그렇게하면 최소한 개찰구를 가능한 출처로 간주하지 않도록하고 작업 시스템에 좀 더 가까이 가야합니다.

+0

제안을 주셔서 감사합니다. 이미 jndi 조회를 사용하여 EJB를 가져 왔으며 동일한 EMF 오류가 발생했습니다. 나는 아이디어가 부족하다. – kgrad

+0

EJB/JPA 문제와 비슷하지만 Wicket과 관련이 없습니다. 아직 작성하지 않았다면 'unitName'및 'name'속성을 채우십시오. @PersistenceUnit (unitName = "foo")는 persistence.xml/과 일치해야합니다. - 기본 규칙을 사용하고 unitName을 지정하지 않아도되지만, persistence unit이 app 또는 persistence.xml에 추가됩니다. –