2012-04-19 2 views
5

JPA/Hibernate 및 Google Guice를 사용하는 응용 프로그램이 있습니다. Guice는 ServletContextListener으로 부트 스트랩되며 EntityManagerFactory 자체를 설정합니다.JBoss AS7 JPA 자동로드하기

응용 프로그램은 Tomcat 7에서 잘 작동하지만 JBoss AS7에 배포 할 때 JBoss가 내 ServletContextListener을 호출하기 전에 자동으로 JPA를 설정하기 때문에 실패합니다.

어떻게 JBoss가 JPA를 자동으로 초기화하지 않고 대신 ServletContextListener이 그것을 기다릴 수 있습니까?

업데이트

제임스 아래에 제공되는 링크에 따르면

응용 전개 중에, JPA 사용은 검출 (예를 들어이 persistence.xml 또는 @ PersistenceContext/단위 주석) 및 하이버 네이트 의존성 주입되고 응용 프로그램 배포

https://docs.jboss.org/author/display/AS71/JPA+Reference+Guide#JPAReferenceGuide-Introduction

나는이 "자동 감지"기능을 해제하는 방법을 알아낼 필요가있다.

업데이트 # 2

JPA의 컨테이너 관리는이 persistence.xml에 다음 속성을 추가하여 해제 할 수 있습니다 :이 기능은 2 월 2012 년

<property name="jboss.as.jpa.managed" value="false" /> 

따르면 this topic에 야간에 사용할 수 있습니다.

+0

이 꽤 오래, 하지만 같은 문제가 발생했습니다. 내 여분의 문제는 persistence.xml을 사용하지 않고 Java 코드로 엔티티 관리자 팩토리를 선언한다는 것이며 거기에 속성을 추가하면 무시되고 아무런 차이가없는 것처럼 보입니다. 이 접근법으로 해결할 수 있다면 어떨까요? – andreadi

+0

@andreadi 잘 모르겠다. AS7에서만 응용 프로그램을 테스트했지만 그 프로젝트에이 응용 프로그램을 사용하지 않았습니다. 당신은 아마도 당신의 세부 사항으로 새로운 질문을하는 것이 가장 좋습니다. –

답변

2

JBoss AS7은 전체 Java EE 서버입니다. 즉, JPA 구현이 번들로 제공됩니다. Tomcat에서는 사용자 고유의 JPA 구현을 제공해야하며 Java SE에서와 같이 JPA를 본질적으로 실행하고 있습니다.

AS7에 대한 JPA reference 설명서를 읽는 것이 좋습니다.

또한 Guice에 대한 실질적인 필요가 없도록 CDI를 얻습니다. 당신은 아마 대신 CDI의 Guice을 사용할 수 있지만 정직하게 내가 그것에 대해 찾기 솔루션을 얼마나 :-)

+0

이전에 Oracle WebLogic 11g를 사용했으며 기본적으로 JPA를 강제로로드하지 않으므로 JBoss가 이상하게 보입니다. 나는 링크를 체크 아웃 할 것이다. –

+0

아마도 persistence.xml을보고 Hibernate와 JPA API를로드하고있을 것입니다. 나는 대부분의 EE 서버가이 작업을 수행하고 있음을 확신하지만, 그것을 보장 할 수는 없다.나는 약간의 검색을했고 아무 것도 그것을 끄는 방법에 관해 나에게 정말로 튀어 나오지 않았다. JPA 서브 시스템을 사용 불가능하게하고 어플리케이션과 함께 Hibernate를 번들링 할 수 있습니다. –

+0

이 기능을 사용 중지 할 방법을 찾지 못했습니다. 나는 당신의 대답을 upvoted하고 아무도 다른 사람이 JPA의 자동 감지를 비활성화하는 방법에 대한 정보를 제공하지 않으면 내가 사무실에 돌아 왔을 때 다음주 초에 그것을 받아 들일 것입니다. 이 문제에 대한 귀하의 협조에 감사 드리며, 귀하의 링크는 적어도 무슨 일이 일어 났는지 설명했습니다. –

관련 문제