Tengo dificultades para enviar dentro de mi EAR mi propia versión de Hibernate (y no la que trae JBoss de forma predeterminada).Actualización de la versión de Hibernate en JBOSS
Entonces hice mi despliegue "de ámbito" al incluir en el EAR un archivo jboss-app.xml que contiene lo siguiente:
<jboss-app>
<loader-repository>
com.example:archive=unique-archive-name
<loader-repository-config>
java2ParentDelegation=false
</loader-repository-config>
</loader-repository>
</jboss-app>
Y, como de costumbre, declaro el profesional de la persistencia en la unidad de persistencia de ser Hibernate, de la siguiente manera:
<persistence>
<persistence-unit name="myapp">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
...
Pero luego, sucede lo peor. En la implementación, el servidor lanza una ClassCastException cuando intenta enviar desde org.hibernate.ejb.HibernatePersistence a la interfaz JPA javax.persistence.spi.PersistenceProvider (que está implícito en HibernatePersistence).
Esto es un poco raro, porque envío la API JPA también en mi EAR, así que, dado que las clases de EAR tienen prioridad a las de JBoss, no debería haber ningún problema cuando se transfiere de HibernatePersistence a PersistenceProvider, ya que "deberían estar" en el mismo cargador de clases.
Si no envío mi propia API JPA, la implementación falla con una excepción ClassNotFoundException cuando JBoss intenta encontrar alguna clase JPA.
¿Alguna idea de por qué falla esta fundición?
Estoy usando JBoss 5.1.0 y estoy intentando usar Hibernate 3.5.6.Final. La versión API de JPA es la que se importa transitoriamente mediante la versión mencionada de Hibernate.
Gracias. Sí, se envían tanto el hibernate-core como hibernate-entitymanager. Para colocar el contenedor de hibernación en common/lib no es una opción, el Hibernate debe enviarse (y debería ser posible ...). – edutesoy