2012-04-19 7 views
5

Tengo una aplicación que utiliza JPA/Hibernate y Google Guice. Guice está bootstrapped en ServletContextListener y configura el propio EntityManagerFactory.JBoss AS7 cargando automáticamente JPA

La aplicación funciona bien en Tomcat 7, pero cuando implemente en JBoss AS7 falla porque JBoss decide configurar JPA automáticamente antes de invocar mi ServletContextListener.

¿Cómo puedo hacer que JBoss no inicialice JPA automáticamente y en su lugar espere a que mi ServletContextListener lo haga?

actualización

De acuerdo con el enlace que James proporciona a continuación:

Durante el despliegue de aplicaciones, se detecta el uso de la APP (por ejemplo persistence.xml o @ PersistenceContext/anotaciones unidad) e inyecta dependencias Hibernate en la implementación de la aplicación.

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

tengo que encontrar la manera de desactivar esta función "detección automática".

Actualización # 2

Gestión de contenedores de APP se puede desactivar mediante la adición de la siguiente propiedad a la persistence.xml:

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

Según this topic, a partir de febrero 2012 este funcionalidad sólo está disponible en una construcción nocturna.

+0

Esto es bastante antiguo, pero me encontré con el mismo problema. Mi problema adicional es que no estoy usando persistence.xml sino declarando la fábrica del administrador de entidades con el código de Java y parece que agregar la propiedad allí se ignora y no hace ninguna diferencia. ¿Alguna idea de si se puede resolver con este enfoque? – andreadi

+0

@andreadi No tengo idea. Solo estaba probando una aplicación en AS7, pero nunca avancé en su uso para ese proyecto. Lo mejor es que apueste por hacer una nueva pregunta con sus detalles. –

Respuesta

2

JBoss AS7 es un servidor Java EE completo. Eso significa que una implementación de JPA viene incluida. En Tomcat debe proporcionar su propia implementación de JPA y básicamente ejecuta JPA como lo haría en Java SE.

Le recomiendo que lea la documentación JPA reference para AS7.

También obtienes CDI por lo que no hay una necesidad real para Guice. Probablemente se podría utilizar en lugar de Guice CDI, pero la verdad es que no se podía decir cómo :-)

+0

Anteriormente utilicé Oracle WebLogic 11g y no cargó forzosamente JPA por usted de forma predeterminada, por lo que parece extraño que JBoss lo haga. Voy a ver el enlace sin embargo. –

+0

Probablemente esté viendo tu persistence.xml y cargando Hibernate y la API de JPA. Estoy bastante seguro de que la mayoría de los servidores de EE hacen esto, pero no puedo garantizarlo.Hice un poco de búsqueda y realmente no me surgió nada sobre cómo desactivarlo. Es posible que pueda desactivar el subsistema JPA y agrupar Hibernate con su aplicación. –

+0

No he encontrado ninguna forma de desactivar esta función. He actualizado su respuesta y la aceptaré a principios de la próxima semana cuando regrese a la oficina si nadie más brinda información sobre cómo desactivar la autodetección de JPA. Agradezco su ayuda en esto, su enlace al menos explicó lo que estaba sucediendo. –

Cuestiones relacionadas